1 | /**
|
---|
2 | * This file has no copyright assigned and is placed in the Public Domain.
|
---|
3 | * This file is part of the mingw-w64 runtime package.
|
---|
4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package.
|
---|
5 | */
|
---|
6 | #ifndef _PSAPI_H_
|
---|
7 | #define _PSAPI_H_
|
---|
8 |
|
---|
9 | #include <_mingw_unicode.h>
|
---|
10 |
|
---|
11 | #ifdef __cplusplus
|
---|
12 | extern "C" {
|
---|
13 | #endif
|
---|
14 |
|
---|
15 | #ifndef PSAPI_VERSION
|
---|
16 | #if NTDDI_VERSION >= NTDDI_WIN7
|
---|
17 | #define PSAPI_VERSION 2
|
---|
18 | #else
|
---|
19 | #define PSAPI_VERSION 1
|
---|
20 | #endif
|
---|
21 | #endif
|
---|
22 |
|
---|
23 | #if PSAPI_VERSION > 1
|
---|
24 | #define EnumProcesses K32EnumProcesses
|
---|
25 | #define EnumProcessModules K32EnumProcessModules
|
---|
26 | #define EnumProcessModulesEx K32EnumProcessModulesEx
|
---|
27 | #define GetModuleBaseNameA K32GetModuleBaseNameA
|
---|
28 | #define GetModuleBaseNameW K32GetModuleBaseNameW
|
---|
29 | #define GetModuleFileNameExA K32GetModuleFileNameExA
|
---|
30 | #define GetModuleFileNameExW K32GetModuleFileNameExW
|
---|
31 | #define GetModuleInformation K32GetModuleInformation
|
---|
32 | #define EmptyWorkingSet K32EmptyWorkingSet
|
---|
33 | #define QueryWorkingSet K32QueryWorkingSet
|
---|
34 | #define QueryWorkingSetEx K32QueryWorkingSetEx
|
---|
35 | #define InitializeProcessForWsWatch K32InitializeProcessForWsWatch
|
---|
36 | #define GetWsChanges K32GetWsChanges
|
---|
37 | #define GetWsChangesEx K32GetWsChangesEx
|
---|
38 | #define GetMappedFileNameW K32GetMappedFileNameW
|
---|
39 | #define GetMappedFileNameA K32GetMappedFileNameA
|
---|
40 | #define EnumDeviceDrivers K32EnumDeviceDrivers
|
---|
41 | #define GetDeviceDriverBaseNameA K32GetDeviceDriverBaseNameA
|
---|
42 | #define GetDeviceDriverBaseNameW K32GetDeviceDriverBaseNameW
|
---|
43 | #define GetDeviceDriverFileNameA K32GetDeviceDriverFileNameA
|
---|
44 | #define GetDeviceDriverFileNameW K32GetDeviceDriverFileNameW
|
---|
45 | #define GetProcessMemoryInfo K32GetProcessMemoryInfo
|
---|
46 | #define GetPerformanceInfo K32GetPerformanceInfo
|
---|
47 | #define EnumPageFilesW K32EnumPageFilesW
|
---|
48 | #define EnumPageFilesA K32EnumPageFilesA
|
---|
49 | #define GetProcessImageFileNameA K32GetProcessImageFileNameA
|
---|
50 | #define GetProcessImageFileNameW K32GetProcessImageFileNameW
|
---|
51 | #endif
|
---|
52 |
|
---|
53 | #define GetModuleBaseName __MINGW_NAME_AW(GetModuleBaseName)
|
---|
54 | #define GetModuleFileNameEx __MINGW_NAME_AW(GetModuleFileNameEx)
|
---|
55 | #define GetMappedFileName __MINGW_NAME_AW(GetMappedFileName)
|
---|
56 | #define GetDeviceDriverBaseName __MINGW_NAME_AW(GetDeviceDriverBaseName)
|
---|
57 | #define GetDeviceDriverFileName __MINGW_NAME_AW(GetDeviceDriverFileName)
|
---|
58 | #define PENUM_PAGE_FILE_CALLBACK __MINGW_NAME_AW(PENUM_PAGE_FILE_CALLBACK)
|
---|
59 | #define EnumPageFiles __MINGW_NAME_AW(EnumPageFiles)
|
---|
60 | #define GetProcessImageFileName __MINGW_NAME_AW(GetProcessImageFileName)
|
---|
61 |
|
---|
62 | #ifndef LIST_MODULES_DEFAULT
|
---|
63 | #define LIST_MODULES_DEFAULT 0x0
|
---|
64 | #endif
|
---|
65 | #ifndef LIST_MODULES_32BIT
|
---|
66 | #define LIST_MODULES_32BIT 0x01
|
---|
67 | #endif
|
---|
68 | #ifndef LIST_MODULES_64BIT
|
---|
69 | #define LIST_MODULES_64BIT 0x02
|
---|
70 | #endif
|
---|
71 | #ifndef LIST_MODULES_ALL
|
---|
72 | #define LIST_MODULES_ALL (LIST_MODULES_32BIT|LIST_MODULES_64BIT)
|
---|
73 | #endif
|
---|
74 |
|
---|
75 | WINBOOL WINAPI EnumProcesses(DWORD *lpidProcess,DWORD cb,DWORD *cbNeeded);
|
---|
76 | WINBOOL WINAPI EnumProcessModules(HANDLE hProcess,HMODULE *lphModule,DWORD cb,LPDWORD lpcbNeeded);
|
---|
77 | DWORD WINAPI GetModuleBaseNameA(HANDLE hProcess,HMODULE hModule,LPSTR lpBaseName,DWORD nSize);
|
---|
78 | DWORD WINAPI GetModuleBaseNameW(HANDLE hProcess,HMODULE hModule,LPWSTR lpBaseName,DWORD nSize);
|
---|
79 | DWORD WINAPI GetModuleFileNameExA(HANDLE hProcess,HMODULE hModule,LPSTR lpFilename,DWORD nSize);
|
---|
80 | DWORD WINAPI GetModuleFileNameExW(HANDLE hProcess,HMODULE hModule,LPWSTR lpFilename,DWORD nSize);
|
---|
81 |
|
---|
82 | typedef struct _MODULEINFO {
|
---|
83 | LPVOID lpBaseOfDll;
|
---|
84 | DWORD SizeOfImage;
|
---|
85 | LPVOID EntryPoint;
|
---|
86 | } MODULEINFO,*LPMODULEINFO;
|
---|
87 |
|
---|
88 | WINBOOL WINAPI GetModuleInformation(HANDLE hProcess,HMODULE hModule,LPMODULEINFO lpmodinfo,DWORD cb);
|
---|
89 | WINBOOL WINAPI EmptyWorkingSet(HANDLE hProcess);
|
---|
90 | WINBOOL WINAPI QueryWorkingSet(HANDLE hProcess,PVOID pv,DWORD cb);
|
---|
91 | WINBOOL WINAPI QueryWorkingSetEx(HANDLE hProcess,PVOID pv,DWORD cb);
|
---|
92 | WINBOOL WINAPI InitializeProcessForWsWatch(HANDLE hProcess);
|
---|
93 |
|
---|
94 | typedef struct _PSAPI_WS_WATCH_INFORMATION {
|
---|
95 | LPVOID FaultingPc;
|
---|
96 | LPVOID FaultingVa;
|
---|
97 | } PSAPI_WS_WATCH_INFORMATION,*PPSAPI_WS_WATCH_INFORMATION;
|
---|
98 |
|
---|
99 | WINBOOL WINAPI GetWsChanges(HANDLE hProcess,PPSAPI_WS_WATCH_INFORMATION lpWatchInfo,DWORD cb);
|
---|
100 | DWORD WINAPI GetMappedFileNameW(HANDLE hProcess,LPVOID lpv,LPWSTR lpFilename,DWORD nSize);
|
---|
101 | DWORD WINAPI GetMappedFileNameA(HANDLE hProcess,LPVOID lpv,LPSTR lpFilename,DWORD nSize);
|
---|
102 | WINBOOL WINAPI EnumDeviceDrivers(LPVOID *lpImageBase,DWORD cb,LPDWORD lpcbNeeded);
|
---|
103 | DWORD WINAPI GetDeviceDriverBaseNameA(LPVOID ImageBase,LPSTR lpBaseName,DWORD nSize);
|
---|
104 | DWORD WINAPI GetDeviceDriverBaseNameW(LPVOID ImageBase,LPWSTR lpBaseName,DWORD nSize);
|
---|
105 | DWORD WINAPI GetDeviceDriverFileNameA(LPVOID ImageBase,LPSTR lpFilename,DWORD nSize);
|
---|
106 | DWORD WINAPI GetDeviceDriverFileNameW(LPVOID ImageBase,LPWSTR lpFilename,DWORD nSize);
|
---|
107 |
|
---|
108 | typedef struct _PROCESS_MEMORY_COUNTERS {
|
---|
109 | DWORD cb;
|
---|
110 | DWORD PageFaultCount;
|
---|
111 | SIZE_T PeakWorkingSetSize;
|
---|
112 | SIZE_T WorkingSetSize;
|
---|
113 | SIZE_T QuotaPeakPagedPoolUsage;
|
---|
114 | SIZE_T QuotaPagedPoolUsage;
|
---|
115 | SIZE_T QuotaPeakNonPagedPoolUsage;
|
---|
116 | SIZE_T QuotaNonPagedPoolUsage;
|
---|
117 | SIZE_T PagefileUsage;
|
---|
118 | SIZE_T PeakPagefileUsage;
|
---|
119 | } PROCESS_MEMORY_COUNTERS;
|
---|
120 | typedef PROCESS_MEMORY_COUNTERS *PPROCESS_MEMORY_COUNTERS;
|
---|
121 |
|
---|
122 | typedef struct _PROCESS_MEMORY_COUNTERS_EX {
|
---|
123 | DWORD cb;
|
---|
124 | DWORD PageFaultCount;
|
---|
125 | SIZE_T PeakWorkingSetSize;
|
---|
126 | SIZE_T WorkingSetSize;
|
---|
127 | SIZE_T QuotaPeakPagedPoolUsage;
|
---|
128 | SIZE_T QuotaPagedPoolUsage;
|
---|
129 | SIZE_T QuotaPeakNonPagedPoolUsage;
|
---|
130 | SIZE_T QuotaNonPagedPoolUsage;
|
---|
131 | SIZE_T PagefileUsage;
|
---|
132 | SIZE_T PeakPagefileUsage;
|
---|
133 | SIZE_T PrivateUsage;
|
---|
134 | } PROCESS_MEMORY_COUNTERS_EX;
|
---|
135 | typedef PROCESS_MEMORY_COUNTERS_EX *PPROCESS_MEMORY_COUNTERS_EX;
|
---|
136 |
|
---|
137 | WINBOOL WINAPI GetProcessMemoryInfo(HANDLE Process,PPROCESS_MEMORY_COUNTERS ppsmemCounters,DWORD cb);
|
---|
138 |
|
---|
139 | typedef struct _PERFORMANCE_INFORMATION {
|
---|
140 | DWORD cb;
|
---|
141 | SIZE_T CommitTotal;
|
---|
142 | SIZE_T CommitLimit;
|
---|
143 | SIZE_T CommitPeak;
|
---|
144 | SIZE_T PhysicalTotal;
|
---|
145 | SIZE_T PhysicalAvailable;
|
---|
146 | SIZE_T SystemCache;
|
---|
147 | SIZE_T KernelTotal;
|
---|
148 | SIZE_T KernelPaged;
|
---|
149 | SIZE_T KernelNonpaged;
|
---|
150 | SIZE_T PageSize;
|
---|
151 | DWORD HandleCount;
|
---|
152 | DWORD ProcessCount;
|
---|
153 | DWORD ThreadCount;
|
---|
154 | } PERFORMANCE_INFORMATION,*PPERFORMANCE_INFORMATION,PERFORMACE_INFORMATION,*PPERFORMACE_INFORMATION;
|
---|
155 |
|
---|
156 | WINBOOL WINAPI GetPerformanceInfo (PPERFORMACE_INFORMATION pPerformanceInformation,DWORD cb);
|
---|
157 |
|
---|
158 | typedef struct _ENUM_PAGE_FILE_INFORMATION {
|
---|
159 | DWORD cb;
|
---|
160 | DWORD Reserved;
|
---|
161 | SIZE_T TotalSize;
|
---|
162 | SIZE_T TotalInUse;
|
---|
163 | SIZE_T PeakUsage;
|
---|
164 | } ENUM_PAGE_FILE_INFORMATION,*PENUM_PAGE_FILE_INFORMATION;
|
---|
165 |
|
---|
166 | typedef WINBOOL (*PENUM_PAGE_FILE_CALLBACKW) (LPVOID pContext,PENUM_PAGE_FILE_INFORMATION pPageFileInfo,LPCWSTR lpFilename);
|
---|
167 | typedef WINBOOL (*PENUM_PAGE_FILE_CALLBACKA) (LPVOID pContext,PENUM_PAGE_FILE_INFORMATION pPageFileInfo,LPCSTR lpFilename);
|
---|
168 |
|
---|
169 | WINBOOL WINAPI EnumPageFilesW (PENUM_PAGE_FILE_CALLBACKW pCallBackRoutine,LPVOID pContext);
|
---|
170 | WINBOOL WINAPI EnumPageFilesA (PENUM_PAGE_FILE_CALLBACKA pCallBackRoutine,LPVOID pContext);
|
---|
171 | DWORD WINAPI GetProcessImageFileNameA(HANDLE hProcess,LPSTR lpImageFileName,DWORD nSize);
|
---|
172 | DWORD WINAPI GetProcessImageFileNameW(HANDLE hProcess,LPWSTR lpImageFileName,DWORD nSize);
|
---|
173 |
|
---|
174 | typedef struct _PSAPI_WS_WATCH_INFORMATION_EX {
|
---|
175 | PSAPI_WS_WATCH_INFORMATION BasicInfo;
|
---|
176 | ULONG_PTR FaultingThreadId;
|
---|
177 | ULONG_PTR Flags;
|
---|
178 | } PSAPI_WS_WATCH_INFORMATION_EX, *PPSAPI_WS_WATCH_INFORMATION_EX;
|
---|
179 |
|
---|
180 | WINBOOL WINAPI GetWsChangesEx(
|
---|
181 | HANDLE hProcess,
|
---|
182 | PPSAPI_WS_WATCH_INFORMATION_EX lpWatchInfoEx,
|
---|
183 | DWORD cb
|
---|
184 | );
|
---|
185 |
|
---|
186 | WINBOOL WINAPI EnumProcessModulesEx(
|
---|
187 | HANDLE hProcess,
|
---|
188 | HMODULE *lphModule,
|
---|
189 | DWORD cb,
|
---|
190 | LPDWORD lpcbNeeded,
|
---|
191 | DWORD dwFilterFlag
|
---|
192 | );
|
---|
193 |
|
---|
194 | typedef union _PSAPI_WORKING_SET_BLOCK {
|
---|
195 | ULONG_PTR Flags;
|
---|
196 | __C89_NAMELESS struct {
|
---|
197 | ULONG_PTR Protection :5;
|
---|
198 | ULONG_PTR ShareCount :3;
|
---|
199 | ULONG_PTR Shared :1;
|
---|
200 | ULONG_PTR Reserved :3;
|
---|
201 | #ifdef _WIN64
|
---|
202 | ULONG_PTR VirtualPage :52;
|
---|
203 | #else
|
---|
204 | ULONG_PTR VirtualPage :20;
|
---|
205 | #endif
|
---|
206 | } ;
|
---|
207 | } PSAPI_WORKING_SET_BLOCK, *PPSAPI_WORKING_SET_BLOCK;
|
---|
208 |
|
---|
209 | typedef struct _PSAPI_WORKING_SET_INFORMATION {
|
---|
210 | ULONG_PTR NumberOfEntries;
|
---|
211 | PSAPI_WORKING_SET_BLOCK WorkingSetInfo[1];
|
---|
212 | } PSAPI_WORKING_SET_INFORMATION, *PPSAPI_WORKING_SET_INFORMATION;
|
---|
213 |
|
---|
214 | typedef union _PSAPI_WORKING_SET_EX_BLOCK {
|
---|
215 | ULONG_PTR Flags;
|
---|
216 | __C89_NAMELESS union {
|
---|
217 | __C89_NAMELESS struct {
|
---|
218 | ULONG_PTR Valid : 1;
|
---|
219 | ULONG_PTR ShareCount : 3;
|
---|
220 | ULONG_PTR Win32Protection : 11;
|
---|
221 | ULONG_PTR Shared : 1;
|
---|
222 | ULONG_PTR Node : 6;
|
---|
223 | ULONG_PTR Locked : 1;
|
---|
224 | ULONG_PTR LargePage : 1;
|
---|
225 | ULONG_PTR Reserved : 7;
|
---|
226 | ULONG_PTR Bad : 1;
|
---|
227 | #ifdef _WIN64
|
---|
228 | ULONG_PTR ReservedUlong : 32;
|
---|
229 | #endif
|
---|
230 | };
|
---|
231 | struct {
|
---|
232 | ULONG_PTR Valid : 1;
|
---|
233 | ULONG_PTR Reserved0 : 14;
|
---|
234 | ULONG_PTR Shared : 1;
|
---|
235 | ULONG_PTR Reserved1 : 15;
|
---|
236 | ULONG_PTR Bad : 1;
|
---|
237 | #ifdef _WIN64
|
---|
238 | ULONG_PTR ReservedUlong : 32;
|
---|
239 | #endif
|
---|
240 | } Invalid;
|
---|
241 | };
|
---|
242 | } PSAPI_WORKING_SET_EX_BLOCK, *PPSAPI_WORKING_SET_EX_BLOCK;
|
---|
243 |
|
---|
244 | typedef struct _PSAPI_WORKING_SET_EX_INFORMATION {
|
---|
245 | PVOID VirtualAddress;
|
---|
246 | PSAPI_WORKING_SET_EX_BLOCK VirtualAttributes;
|
---|
247 | } PSAPI_WORKING_SET_EX_INFORMATION, *PPSAPI_WORKING_SET_EX_INFORMATION;
|
---|
248 |
|
---|
249 | #ifdef __cplusplus
|
---|
250 | }
|
---|
251 | #endif
|
---|
252 | #endif
|
---|