2 psapi.h - Include file for PSAPI.DLL APIs
4 Written by Mumit Khan <khan@nanotech.wisc.edu>
6 This file is part of a free library for the Win32 API.
8 NOTE: This strictly does not belong in the Win32 API since it's
9 really part of Platform SDK. However,GDB needs it and we might
10 as well provide it here.
12 This library is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
20 #pragma GCC system_header
29 typedef struct _MODULEINFO {
33 } MODULEINFO,*LPMODULEINFO;
35 typedef struct _PSAPI_WS_WATCH_INFORMATION {
38 } PSAPI_WS_WATCH_INFORMATION,*PPSAPI_WS_WATCH_INFORMATION;
40 typedef struct _PROCESS_MEMORY_COUNTERS {
43 DWORD PeakWorkingSetSize;
45 DWORD QuotaPeakPagedPoolUsage;
46 DWORD QuotaPagedPoolUsage;
47 DWORD QuotaPeakNonPagedPoolUsage;
48 DWORD QuotaNonPagedPoolUsage;
50 DWORD PeakPagefileUsage;
51 } PROCESS_MEMORY_COUNTERS,*PPROCESS_MEMORY_COUNTERS;
53 typedef struct _PROCESS_MEMORY_COUNTERS_EX {
56 DWORD PeakWorkingSetSize;
58 DWORD QuotaPeakPagedPoolUsage;
59 DWORD QuotaPagedPoolUsage;
60 DWORD QuotaPeakNonPagedPoolUsage;
61 DWORD QuotaNonPagedPoolUsage;
63 DWORD PeakPagefileUsage;
65 } PROCESS_MEMORY_COUNTERS_EX,*PPROCESS_MEMORY_COUNTERS_EX;
67 typedef struct _PERFORMANCE_INFORMATION {
73 DWORD PhysicalAvailable;
82 } PERFORMANCE_INFORMATION, *PPERFORMANCE_INFORMATION;
84 typedef union _PSAPI_WORKING_SET_BLOCK {
87 ULONG_PTR Protection :5;
88 ULONG_PTR ShareCount :3;
90 ULONG_PTR Reserved :3;
91 ULONG_PTR VirtualPage :20;
93 } PSAPI_WORKING_SET_BLOCK, *PPSAPI_WORKING_SET_BLOCK;
95 typedef struct _PSAPI_WORKING_SET_INFORMATION {
96 ULONG_PTR NumberOfEntries;
97 PSAPI_WORKING_SET_BLOCK WorkingSetInfo[1];
98 } PSAPI_WORKING_SET_INFORMATION, *PPSAPI_WORKING_SET_INFORMATION;
100 /* Grouped by application,not in alphabetical order. */
101 BOOL WINAPI EnumProcesses(DWORD *,DWORD,DWORD *);
102 BOOL WINAPI EnumProcessModules(HANDLE,HMODULE *,DWORD,LPDWORD);
103 DWORD WINAPI GetModuleBaseNameA(HANDLE,HMODULE,LPSTR,DWORD);
104 DWORD WINAPI GetModuleBaseNameW(HANDLE,HMODULE,LPWSTR,DWORD);
105 DWORD WINAPI GetModuleFileNameExA(HANDLE,HMODULE,LPSTR,DWORD);
106 DWORD WINAPI GetModuleFileNameExW(HANDLE,HMODULE,LPWSTR,DWORD);
107 BOOL WINAPI GetModuleInformation(HANDLE,HMODULE,LPMODULEINFO,DWORD);
108 BOOL WINAPI EmptyWorkingSet(HANDLE);
109 BOOL WINAPI QueryWorkingSet(HANDLE,PVOID,DWORD);
110 BOOL WINAPI InitializeProcessForWsWatch(HANDLE);
111 BOOL WINAPI GetWsChanges(HANDLE,PPSAPI_WS_WATCH_INFORMATION,DWORD);
112 DWORD WINAPI GetMappedFileNameW(HANDLE,LPVOID,LPWSTR,DWORD);
113 DWORD WINAPI GetMappedFileNameA(HANDLE,LPVOID,LPSTR,DWORD);
114 BOOL WINAPI EnumDeviceDrivers(LPVOID *,DWORD,LPDWORD);
115 DWORD WINAPI GetDeviceDriverBaseNameA(LPVOID,LPSTR,DWORD);
116 DWORD WINAPI GetDeviceDriverBaseNameW(LPVOID,LPWSTR,DWORD);
117 DWORD WINAPI GetDeviceDriverFileNameA(LPVOID,LPSTR,DWORD);
118 DWORD WINAPI GetDeviceDriverFileNameW(LPVOID,LPWSTR,DWORD);
119 BOOL WINAPI GetProcessMemoryInfo(HANDLE,PPROCESS_MEMORY_COUNTERS,DWORD);
120 BOOL WINAPI GetPerformanceInfo(PPERFORMANCE_INFORMATION,DWORD);
121 #if (_WIN32_WINNT >= 0x0501)
122 DWORD WINAPI GetProcessImageFileNameA(HANDLE,LPSTR,DWORD);
123 DWORD WINAPI GetProcessImageFileNameW(HANDLE,LPWSTR,DWORD);
126 #endif /* not RC_INVOKED */
129 #define GetModuleBaseName GetModuleBaseNameW
130 #define GetModuleFileNameEx GetModuleFileNameExW
131 #define GetMappedFileName GetMappedFileNameW
132 #define GetDeviceDriverBaseName GetDeviceDriverBaseNameW
133 #define GetDeviceDriverFileName GetDeviceDriverFileNameW
134 #if (_WIN32_WINNT >= 0x0501)
135 #define GetProcessImageFileName GetProcessImageFileNameW
138 #define GetModuleBaseName GetModuleBaseNameA
139 #define GetModuleFileNameEx GetModuleFileNameExA
140 #define GetMappedFileName GetMappedFileNameA
141 #define GetDeviceDriverBaseName GetDeviceDriverBaseNameA
142 #define GetDeviceDriverFileName GetDeviceDriverFileNameA
143 #if (_WIN32_WINNT >= 0x0501)
144 #define GetProcessImageFileName GetProcessImageFileNameA
152 #endif /* _PSAPI_H */