3 * @copy 2012 MinGW.org project
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the "Software"),
7 * to deal in the Software without restriction, including without limitation
8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 * and/or sell copies of the Software, and to permit persons to whom the
10 * Software is furnished to do so, subject to the following conditions:
12 * The above copyright notice and this permission notice (including the next
13 * paragraph) shall be included in all copies or substantial portions of the
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
26 #pragma GCC system_header
35 typedef struct _MODULEINFO {
39 } MODULEINFO,*LPMODULEINFO;
41 typedef struct _PSAPI_WS_WATCH_INFORMATION {
44 } PSAPI_WS_WATCH_INFORMATION,*PPSAPI_WS_WATCH_INFORMATION;
46 typedef struct _PROCESS_MEMORY_COUNTERS {
49 DWORD PeakWorkingSetSize;
51 DWORD QuotaPeakPagedPoolUsage;
52 DWORD QuotaPagedPoolUsage;
53 DWORD QuotaPeakNonPagedPoolUsage;
54 DWORD QuotaNonPagedPoolUsage;
56 DWORD PeakPagefileUsage;
57 } PROCESS_MEMORY_COUNTERS,*PPROCESS_MEMORY_COUNTERS;
59 typedef struct _PROCESS_MEMORY_COUNTERS_EX {
62 DWORD PeakWorkingSetSize;
64 DWORD QuotaPeakPagedPoolUsage;
65 DWORD QuotaPagedPoolUsage;
66 DWORD QuotaPeakNonPagedPoolUsage;
67 DWORD QuotaNonPagedPoolUsage;
69 DWORD PeakPagefileUsage;
71 } PROCESS_MEMORY_COUNTERS_EX,*PPROCESS_MEMORY_COUNTERS_EX;
73 typedef struct _PERFORMANCE_INFORMATION {
79 DWORD PhysicalAvailable;
88 } PERFORMANCE_INFORMATION, *PPERFORMANCE_INFORMATION;
90 typedef union _PSAPI_WORKING_SET_BLOCK {
93 ULONG_PTR Protection :5;
94 ULONG_PTR ShareCount :3;
96 ULONG_PTR Reserved :3;
97 ULONG_PTR VirtualPage :20;
99 } PSAPI_WORKING_SET_BLOCK, *PPSAPI_WORKING_SET_BLOCK;
101 typedef struct _PSAPI_WORKING_SET_INFORMATION {
102 ULONG_PTR NumberOfEntries;
103 PSAPI_WORKING_SET_BLOCK WorkingSetInfo[1];
104 } PSAPI_WORKING_SET_INFORMATION, *PPSAPI_WORKING_SET_INFORMATION;
106 /* Grouped by application,not in alphabetical order. */
107 BOOL WINAPI EnumProcesses(DWORD *,DWORD,DWORD *);
108 BOOL WINAPI EnumProcessModules(HANDLE,HMODULE *,DWORD,LPDWORD);
109 DWORD WINAPI GetModuleBaseNameA(HANDLE,HMODULE,LPSTR,DWORD);
110 DWORD WINAPI GetModuleBaseNameW(HANDLE,HMODULE,LPWSTR,DWORD);
111 DWORD WINAPI GetModuleFileNameExA(HANDLE,HMODULE,LPSTR,DWORD);
112 DWORD WINAPI GetModuleFileNameExW(HANDLE,HMODULE,LPWSTR,DWORD);
113 BOOL WINAPI GetModuleInformation(HANDLE,HMODULE,LPMODULEINFO,DWORD);
114 BOOL WINAPI EmptyWorkingSet(HANDLE);
115 BOOL WINAPI QueryWorkingSet(HANDLE,PVOID,DWORD);
116 BOOL WINAPI InitializeProcessForWsWatch(HANDLE);
117 BOOL WINAPI GetWsChanges(HANDLE,PPSAPI_WS_WATCH_INFORMATION,DWORD);
118 DWORD WINAPI GetMappedFileNameW(HANDLE,LPVOID,LPWSTR,DWORD);
119 DWORD WINAPI GetMappedFileNameA(HANDLE,LPVOID,LPSTR,DWORD);
120 BOOL WINAPI EnumDeviceDrivers(LPVOID *,DWORD,LPDWORD);
121 DWORD WINAPI GetDeviceDriverBaseNameA(LPVOID,LPSTR,DWORD);
122 DWORD WINAPI GetDeviceDriverBaseNameW(LPVOID,LPWSTR,DWORD);
123 DWORD WINAPI GetDeviceDriverFileNameA(LPVOID,LPSTR,DWORD);
124 DWORD WINAPI GetDeviceDriverFileNameW(LPVOID,LPWSTR,DWORD);
125 BOOL WINAPI GetProcessMemoryInfo(HANDLE,PPROCESS_MEMORY_COUNTERS,DWORD);
126 BOOL WINAPI GetPerformanceInfo(PPERFORMANCE_INFORMATION,DWORD);
128 #define GetModuleBaseName __AW(GetModuleBaseName)
129 #define GetModuleFileNameEx __AW(GetModuleFileNameEx)
130 #define GetMappedFileName __AW(GetMappedFileName)
131 #define GetDeviceDriverBaseName __AW(GetDeviceDriverBaseName)
132 #define GetDeviceDriverFileName __AW(GetDeviceDriverFileName)
134 #if (_WIN32_WINNT >= _WIN32_WINNT_WINXP)
135 DWORD WINAPI GetProcessImageFileNameA(HANDLE,LPSTR,DWORD);
136 DWORD WINAPI GetProcessImageFileNameW(HANDLE,LPWSTR,DWORD);
137 #define GetProcessImageFileName __AW(GetProcessImageFileName)
138 #endif /* _WIN32_WINNT >= _WIN32_WINNT_WINXP */
140 #endif /* not RC_INVOKED */
146 #endif /* _PSAPI_H */