1 // Copyright © 2015, skdltmxn
2 // Licensed under the MIT License <LICENSE.md>
3 //! API Prototypes and Definitions for PSAPI.DLL
4 pub const LIST_MODULES_DEFAULT
: ::DWORD
= 0x0;
5 pub const LIST_MODULES_32BIT
: ::DWORD
= 0x01;
6 pub const LIST_MODULES_64BIT
: ::DWORD
= 0x02;
7 pub const LIST_MODULES_ALL
: ::DWORD
= LIST_MODULES_32BIT
| LIST_MODULES_64BIT
;
8 STRUCT
!{struct MODULEINFO
{
13 pub type LPMODULEINFO
= *mut MODULEINFO
;
14 STRUCT
!{struct PSAPI_WORKING_SET_BLOCK
{
16 BitFields
: ::ULONG_PTR
,
18 #[cfg(target_arch="x86")]
19 BITFIELD
!(PSAPI_WORKING_SET_BLOCK BitFields
: ::ULONG_PTR
[
20 Protection set_Protection
[0..5],
21 ShareCount set_ShareCount
[5..8],
22 Shared set_Shared
[8..9],
23 Reserved set_Reserved
[9..12],
24 VirtualPage set_VirtualPage
[12..32],
26 #[cfg(target_arch="x86_64")]
27 BITFIELD
!(PSAPI_WORKING_SET_BLOCK BitFields
: ::ULONG_PTR
[
28 Protection set_Protection
[0..5],
29 ShareCount set_ShareCount
[5..8],
30 Shared set_Shared
[8..9],
31 Reserved set_Reserved
[9..12],
32 VirtualPage set_VirtualPage
[12..64],
34 pub type PPSAPI_WORKING_SET_BLOCK
= *mut PSAPI_WORKING_SET_BLOCK
;
35 STRUCT
!{struct PSAPI_WORKING_SET_INFORMATION
{
36 NumberOfEntries
: ::ULONG_PTR
,
37 WorkingSetInfo
: [PSAPI_WORKING_SET_BLOCK
; 1],
39 pub type PPSAPI_WORKING_SET_INFORMATION
= *mut PSAPI_WORKING_SET_INFORMATION
;
40 STRUCT
!{struct PSAPI_WORKING_SET_EX_BLOCK_Invalid
{
41 BitFields
: ::ULONG_PTR
,
43 #[cfg(target_arch="x86")]
44 BITFIELD
!(PSAPI_WORKING_SET_EX_BLOCK_Invalid BitFields
: ::ULONG_PTR
[
45 Valid set_Valid
[0..1],
46 Reserved0 set_Reserved0
[1..15],
47 Shared set_Shared
[15..16],
48 Reserved1 set_Reserved1
[16..31],
51 #[cfg(target_arch="x86_64")]
52 BITFIELD
!(PSAPI_WORKING_SET_EX_BLOCK_Invalid BitFields
: ::ULONG_PTR
[
53 Valid set_Valid
[0..1],
54 Reserved0 set_Reserved0
[1..15],
55 Shared set_Shared
[15..16],
56 Reserved1 set_Reserved1
[16..31],
58 ReservedUlong set_ReservedUlong
[32..64],
60 STRUCT
!{struct PSAPI_WORKING_SET_EX_BLOCK
{
62 BitFields
: ::ULONG_PTR
,
64 #[cfg(target_arch="x86")]
65 BITFIELD
!(PSAPI_WORKING_SET_EX_BLOCK BitFields
: ::ULONG_PTR
[
66 Valid set_Valid
[0..1],
67 ShareCount set_ShareCount
[1..4],
68 Win32Protection set_Win32Protection
[4..15],
69 Shared set_Shared
[15..16],
70 Node set_Node
[16..22],
71 Locked set_Locked
[22..23],
72 LargePage set_LargePage
[23..24],
73 Reserved set_Reserved
[24..31],
76 #[cfg(target_arch="x86_64")]
77 BITFIELD
!(PSAPI_WORKING_SET_EX_BLOCK BitFields
: ::ULONG_PTR
[
78 Valid set_Valid
[0..1],
79 ShareCount set_ShareCount
[1..4],
80 Win32Protection set_Win32Protection
[4..15],
81 Shared set_Shared
[15..16],
82 Node set_Node
[16..22],
83 Locked set_Locked
[22..23],
84 LargePage set_LargePage
[23..24],
85 Reserved set_Reserved
[24..31],
87 ReservedUlong set_ReservedUlong
[32..64],
90 PSAPI_WORKING_SET_EX_BLOCK
, BitFields
, Invalid
, Invalid_mut
, PSAPI_WORKING_SET_EX_BLOCK_Invalid
92 pub type PPSAPI_WORKING_SET_EX_BLOCK
= *mut PSAPI_WORKING_SET_EX_BLOCK
;
93 STRUCT
!{struct PSAPI_WORKING_SET_EX_INFORMATION
{
94 VirtualAddress
: ::PVOID
,
95 VirtualAttributes
: PSAPI_WORKING_SET_EX_BLOCK
,
97 pub type PPSAPI_WORKING_SET_EX_INFORMATION
= *mut PSAPI_WORKING_SET_EX_INFORMATION
;
98 STRUCT
!{struct PSAPI_WS_WATCH_INFORMATION
{
100 FaultingVa
: ::LPVOID
,
102 pub type PPSAPI_WS_WATCH_INFORMATION
= *mut PSAPI_WS_WATCH_INFORMATION
;
103 STRUCT
!{struct PSAPI_WS_WATCH_INFORMATION_EX
{
104 BasicInfo
: PSAPI_WS_WATCH_INFORMATION
,
105 FaultingThreadId
: ::ULONG_PTR
,
108 pub type PPSAPI_WS_WATCH_INFORMATION_EX
= *mut PSAPI_WS_WATCH_INFORMATION_EX
;
109 STRUCT
!{struct PROCESS_MEMORY_COUNTERS
{
111 PageFaultCount
: ::DWORD
,
112 PeakWorkingSetSize
: ::SIZE_T
,
113 WorkingSetSize
: ::SIZE_T
,
114 QuotaPeakPagedPoolUsage
: ::SIZE_T
,
115 QuotaPagedPoolUsage
: ::SIZE_T
,
116 QuotaPeakNonPagedPoolUsage
: ::SIZE_T
,
117 QuotaNonPagedPoolUsage
: ::SIZE_T
,
118 PagefileUsage
: ::SIZE_T
,
119 PeakPagefileUsage
: ::SIZE_T
,
121 pub type PPROCESS_MEMORY_COUNTERS
= *mut PROCESS_MEMORY_COUNTERS
;
122 STRUCT
!{struct PROCESS_MEMORY_COUNTERS_EX
{
124 PageFaultCount
: ::DWORD
,
125 PeakWorkingSetSize
: ::SIZE_T
,
126 WorkingSetSize
: ::SIZE_T
,
127 QuotaPeakPagedPoolUsage
: ::SIZE_T
,
128 QuotaPagedPoolUsage
: ::SIZE_T
,
129 QuotaPeakNonPagedPoolUsage
: ::SIZE_T
,
130 QuotaNonPagedPoolUsage
: ::SIZE_T
,
131 PagefileUsage
: ::SIZE_T
,
132 PeakPagefileUsage
: ::SIZE_T
,
133 PrivateUsage
: ::SIZE_T
,
135 pub type PPROCESS_MEMORY_COUNTERS_EX
= *mut PROCESS_MEMORY_COUNTERS_EX
;
136 STRUCT
!{struct PERFORMANCE_INFORMATION
{
138 CommitTotal
: ::SIZE_T
,
139 CommitLimit
: ::SIZE_T
,
140 CommitPeak
: ::SIZE_T
,
141 PhysicalTotal
: ::SIZE_T
,
142 PhysicalAvailable
: ::SIZE_T
,
143 SystemCache
: ::SIZE_T
,
144 KernelTotal
: ::SIZE_T
,
145 KernelPaged
: ::SIZE_T
,
146 KernelNonpaged
: ::SIZE_T
,
148 HandleCount
: ::DWORD
,
149 ProcessCount
: ::DWORD
,
150 ThreadCount
: ::DWORD
,
152 pub type PPERFORMANCE_INFORMATION
= *mut PERFORMANCE_INFORMATION
;
153 STRUCT
!{struct ENUM_PAGE_FILE_INFORMATION
{
157 TotalInUse
: ::SIZE_T
,
160 pub type PENUM_PAGE_FILE_INFORMATION
= *mut ENUM_PAGE_FILE_INFORMATION
;
161 pub type PENUM_PAGE_FILE_CALLBACKA
= Option
<unsafe extern "system" fn(
162 pContext
: ::LPVOID
, pPageFileInfo
: PENUM_PAGE_FILE_INFORMATION
, lpFilename
: ::LPCSTR
,
164 pub type PENUM_PAGE_FILE_CALLBACKW
= Option
<unsafe extern "system" fn(
165 pContext
: ::LPVOID
, pPageFileInfo
: PENUM_PAGE_FILE_INFORMATION
, lpFilename
: ::LPCWSTR
,