| /** |
| * This file has no copyright assigned and is placed in the Public Domain. |
| * This file is part of the mingw-w64 runtime package. |
| * No warranty is given; refer to the file DISCLAIMER.PD within this package. |
| */ |
| #ifndef _PSAPI_H_ |
| #define _PSAPI_H_ |
| |
| #include <_mingw_unicode.h> |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #ifndef PSAPI_VERSION |
| #if NTDDI_VERSION >= NTDDI_WIN7 |
| #define PSAPI_VERSION 2 |
| #else |
| #define PSAPI_VERSION 1 |
| #endif |
| #endif |
| |
| #if PSAPI_VERSION > 1 |
| #define EnumProcesses K32EnumProcesses |
| #define EnumProcessModules K32EnumProcessModules |
| #define EnumProcessModulesEx K32EnumProcessModulesEx |
| #define GetModuleBaseNameA K32GetModuleBaseNameA |
| #define GetModuleBaseNameW K32GetModuleBaseNameW |
| #define GetModuleFileNameExA K32GetModuleFileNameExA |
| #define GetModuleFileNameExW K32GetModuleFileNameExW |
| #define GetModuleInformation K32GetModuleInformation |
| #define EmptyWorkingSet K32EmptyWorkingSet |
| #define QueryWorkingSet K32QueryWorkingSet |
| #define QueryWorkingSetEx K32QueryWorkingSetEx |
| #define InitializeProcessForWsWatch K32InitializeProcessForWsWatch |
| #define GetWsChanges K32GetWsChanges |
| #define GetWsChangesEx K32GetWsChangesEx |
| #define GetMappedFileNameW K32GetMappedFileNameW |
| #define GetMappedFileNameA K32GetMappedFileNameA |
| #define EnumDeviceDrivers K32EnumDeviceDrivers |
| #define GetDeviceDriverBaseNameA K32GetDeviceDriverBaseNameA |
| #define GetDeviceDriverBaseNameW K32GetDeviceDriverBaseNameW |
| #define GetDeviceDriverFileNameA K32GetDeviceDriverFileNameA |
| #define GetDeviceDriverFileNameW K32GetDeviceDriverFileNameW |
| #define GetProcessMemoryInfo K32GetProcessMemoryInfo |
| #define GetPerformanceInfo K32GetPerformanceInfo |
| #define EnumPageFilesW K32EnumPageFilesW |
| #define EnumPageFilesA K32EnumPageFilesA |
| #define GetProcessImageFileNameA K32GetProcessImageFileNameA |
| #define GetProcessImageFileNameW K32GetProcessImageFileNameW |
| #endif |
| |
| #define GetModuleBaseName __MINGW_NAME_AW(GetModuleBaseName) |
| #define GetModuleFileNameEx __MINGW_NAME_AW(GetModuleFileNameEx) |
| #define GetMappedFileName __MINGW_NAME_AW(GetMappedFileName) |
| #define GetDeviceDriverBaseName __MINGW_NAME_AW(GetDeviceDriverBaseName) |
| #define GetDeviceDriverFileName __MINGW_NAME_AW(GetDeviceDriverFileName) |
| #define PENUM_PAGE_FILE_CALLBACK __MINGW_NAME_AW(PENUM_PAGE_FILE_CALLBACK) |
| #define EnumPageFiles __MINGW_NAME_AW(EnumPageFiles) |
| #define GetProcessImageFileName __MINGW_NAME_AW(GetProcessImageFileName) |
| |
| #ifndef LIST_MODULES_DEFAULT |
| #define LIST_MODULES_DEFAULT 0x0 |
| #endif |
| #ifndef LIST_MODULES_32BIT |
| #define LIST_MODULES_32BIT 0x01 |
| #endif |
| #ifndef LIST_MODULES_64BIT |
| #define LIST_MODULES_64BIT 0x02 |
| #endif |
| #ifndef LIST_MODULES_ALL |
| #define LIST_MODULES_ALL (LIST_MODULES_32BIT|LIST_MODULES_64BIT) |
| #endif |
| |
| WINBOOL WINAPI EnumProcesses(DWORD *lpidProcess,DWORD cb,DWORD *cbNeeded); |
| WINBOOL WINAPI EnumProcessModules(HANDLE hProcess,HMODULE *lphModule,DWORD cb,LPDWORD lpcbNeeded); |
| DWORD WINAPI GetModuleBaseNameA(HANDLE hProcess,HMODULE hModule,LPSTR lpBaseName,DWORD nSize); |
| DWORD WINAPI GetModuleBaseNameW(HANDLE hProcess,HMODULE hModule,LPWSTR lpBaseName,DWORD nSize); |
| DWORD WINAPI GetModuleFileNameExA(HANDLE hProcess,HMODULE hModule,LPSTR lpFilename,DWORD nSize); |
| DWORD WINAPI GetModuleFileNameExW(HANDLE hProcess,HMODULE hModule,LPWSTR lpFilename,DWORD nSize); |
| |
| typedef struct _MODULEINFO { |
| LPVOID lpBaseOfDll; |
| DWORD SizeOfImage; |
| LPVOID EntryPoint; |
| } MODULEINFO,*LPMODULEINFO; |
| |
| WINBOOL WINAPI GetModuleInformation(HANDLE hProcess,HMODULE hModule,LPMODULEINFO lpmodinfo,DWORD cb); |
| WINBOOL WINAPI EmptyWorkingSet(HANDLE hProcess); |
| WINBOOL WINAPI QueryWorkingSet(HANDLE hProcess,PVOID pv,DWORD cb); |
| WINBOOL WINAPI QueryWorkingSetEx(HANDLE hProcess,PVOID pv,DWORD cb); |
| WINBOOL WINAPI InitializeProcessForWsWatch(HANDLE hProcess); |
| |
| typedef struct _PSAPI_WS_WATCH_INFORMATION { |
| LPVOID FaultingPc; |
| LPVOID FaultingVa; |
| } PSAPI_WS_WATCH_INFORMATION,*PPSAPI_WS_WATCH_INFORMATION; |
| |
| WINBOOL WINAPI GetWsChanges(HANDLE hProcess,PPSAPI_WS_WATCH_INFORMATION lpWatchInfo,DWORD cb); |
| DWORD WINAPI GetMappedFileNameW(HANDLE hProcess,LPVOID lpv,LPWSTR lpFilename,DWORD nSize); |
| DWORD WINAPI GetMappedFileNameA(HANDLE hProcess,LPVOID lpv,LPSTR lpFilename,DWORD nSize); |
| WINBOOL WINAPI EnumDeviceDrivers(LPVOID *lpImageBase,DWORD cb,LPDWORD lpcbNeeded); |
| DWORD WINAPI GetDeviceDriverBaseNameA(LPVOID ImageBase,LPSTR lpBaseName,DWORD nSize); |
| DWORD WINAPI GetDeviceDriverBaseNameW(LPVOID ImageBase,LPWSTR lpBaseName,DWORD nSize); |
| DWORD WINAPI GetDeviceDriverFileNameA(LPVOID ImageBase,LPSTR lpFilename,DWORD nSize); |
| DWORD WINAPI GetDeviceDriverFileNameW(LPVOID ImageBase,LPWSTR lpFilename,DWORD nSize); |
| |
| typedef struct _PROCESS_MEMORY_COUNTERS { |
| DWORD cb; |
| DWORD PageFaultCount; |
| SIZE_T PeakWorkingSetSize; |
| SIZE_T WorkingSetSize; |
| SIZE_T QuotaPeakPagedPoolUsage; |
| SIZE_T QuotaPagedPoolUsage; |
| SIZE_T QuotaPeakNonPagedPoolUsage; |
| SIZE_T QuotaNonPagedPoolUsage; |
| SIZE_T PagefileUsage; |
| SIZE_T PeakPagefileUsage; |
| } PROCESS_MEMORY_COUNTERS; |
| typedef PROCESS_MEMORY_COUNTERS *PPROCESS_MEMORY_COUNTERS; |
| |
| typedef struct _PROCESS_MEMORY_COUNTERS_EX { |
| DWORD cb; |
| DWORD PageFaultCount; |
| SIZE_T PeakWorkingSetSize; |
| SIZE_T WorkingSetSize; |
| SIZE_T QuotaPeakPagedPoolUsage; |
| SIZE_T QuotaPagedPoolUsage; |
| SIZE_T QuotaPeakNonPagedPoolUsage; |
| SIZE_T QuotaNonPagedPoolUsage; |
| SIZE_T PagefileUsage; |
| SIZE_T PeakPagefileUsage; |
| SIZE_T PrivateUsage; |
| } PROCESS_MEMORY_COUNTERS_EX; |
| typedef PROCESS_MEMORY_COUNTERS_EX *PPROCESS_MEMORY_COUNTERS_EX; |
| |
| WINBOOL WINAPI GetProcessMemoryInfo(HANDLE Process,PPROCESS_MEMORY_COUNTERS ppsmemCounters,DWORD cb); |
| |
| typedef struct _PERFORMANCE_INFORMATION { |
| DWORD cb; |
| SIZE_T CommitTotal; |
| SIZE_T CommitLimit; |
| SIZE_T CommitPeak; |
| SIZE_T PhysicalTotal; |
| SIZE_T PhysicalAvailable; |
| SIZE_T SystemCache; |
| SIZE_T KernelTotal; |
| SIZE_T KernelPaged; |
| SIZE_T KernelNonpaged; |
| SIZE_T PageSize; |
| DWORD HandleCount; |
| DWORD ProcessCount; |
| DWORD ThreadCount; |
| } PERFORMANCE_INFORMATION,*PPERFORMANCE_INFORMATION,PERFORMACE_INFORMATION,*PPERFORMACE_INFORMATION; |
| |
| WINBOOL WINAPI GetPerformanceInfo (PPERFORMACE_INFORMATION pPerformanceInformation,DWORD cb); |
| |
| typedef struct _ENUM_PAGE_FILE_INFORMATION { |
| DWORD cb; |
| DWORD Reserved; |
| SIZE_T TotalSize; |
| SIZE_T TotalInUse; |
| SIZE_T PeakUsage; |
| } ENUM_PAGE_FILE_INFORMATION,*PENUM_PAGE_FILE_INFORMATION; |
| |
| typedef WINBOOL (*PENUM_PAGE_FILE_CALLBACKW) (LPVOID pContext,PENUM_PAGE_FILE_INFORMATION pPageFileInfo,LPCWSTR lpFilename); |
| typedef WINBOOL (*PENUM_PAGE_FILE_CALLBACKA) (LPVOID pContext,PENUM_PAGE_FILE_INFORMATION pPageFileInfo,LPCSTR lpFilename); |
| |
| WINBOOL WINAPI EnumPageFilesW (PENUM_PAGE_FILE_CALLBACKW pCallBackRoutine,LPVOID pContext); |
| WINBOOL WINAPI EnumPageFilesA (PENUM_PAGE_FILE_CALLBACKA pCallBackRoutine,LPVOID pContext); |
| DWORD WINAPI GetProcessImageFileNameA(HANDLE hProcess,LPSTR lpImageFileName,DWORD nSize); |
| DWORD WINAPI GetProcessImageFileNameW(HANDLE hProcess,LPWSTR lpImageFileName,DWORD nSize); |
| |
| typedef struct _PSAPI_WS_WATCH_INFORMATION_EX { |
| PSAPI_WS_WATCH_INFORMATION BasicInfo; |
| ULONG_PTR FaultingThreadId; |
| ULONG_PTR Flags; |
| } PSAPI_WS_WATCH_INFORMATION_EX, *PPSAPI_WS_WATCH_INFORMATION_EX; |
| |
| WINBOOL WINAPI GetWsChangesEx( |
| HANDLE hProcess, |
| PPSAPI_WS_WATCH_INFORMATION_EX lpWatchInfoEx, |
| DWORD cb |
| ); |
| |
| WINBOOL WINAPI EnumProcessModulesEx( |
| HANDLE hProcess, |
| HMODULE *lphModule, |
| DWORD cb, |
| LPDWORD lpcbNeeded, |
| DWORD dwFilterFlag |
| ); |
| |
| typedef union _PSAPI_WORKING_SET_BLOCK { |
| ULONG_PTR Flags; |
| __C89_NAMELESS struct { |
| ULONG_PTR Protection :5; |
| ULONG_PTR ShareCount :3; |
| ULONG_PTR Shared :1; |
| ULONG_PTR Reserved :3; |
| #ifdef _WIN64 |
| ULONG_PTR VirtualPage :52; |
| #else |
| ULONG_PTR VirtualPage :20; |
| #endif |
| } ; |
| } PSAPI_WORKING_SET_BLOCK, *PPSAPI_WORKING_SET_BLOCK; |
| |
| typedef struct _PSAPI_WORKING_SET_INFORMATION { |
| ULONG_PTR NumberOfEntries; |
| PSAPI_WORKING_SET_BLOCK WorkingSetInfo[1]; |
| } PSAPI_WORKING_SET_INFORMATION, *PPSAPI_WORKING_SET_INFORMATION; |
| |
| typedef union _PSAPI_WORKING_SET_EX_BLOCK { |
| ULONG_PTR Flags; |
| __C89_NAMELESS union { |
| __C89_NAMELESS struct { |
| ULONG_PTR Valid : 1; |
| ULONG_PTR ShareCount : 3; |
| ULONG_PTR Win32Protection : 11; |
| ULONG_PTR Shared : 1; |
| ULONG_PTR Node : 6; |
| ULONG_PTR Locked : 1; |
| ULONG_PTR LargePage : 1; |
| ULONG_PTR Reserved : 7; |
| ULONG_PTR Bad : 1; |
| #ifdef _WIN64 |
| ULONG_PTR ReservedUlong : 32; |
| #endif |
| }; |
| struct { |
| ULONG_PTR Valid : 1; |
| ULONG_PTR Reserved0 : 14; |
| ULONG_PTR Shared : 1; |
| ULONG_PTR Reserved1 : 15; |
| ULONG_PTR Bad : 1; |
| #ifdef _WIN64 |
| ULONG_PTR ReservedUlong : 32; |
| #endif |
| } Invalid; |
| }; |
| } PSAPI_WORKING_SET_EX_BLOCK, *PPSAPI_WORKING_SET_EX_BLOCK; |
| |
| typedef struct _PSAPI_WORKING_SET_EX_INFORMATION { |
| PVOID VirtualAddress; |
| PSAPI_WORKING_SET_EX_BLOCK VirtualAttributes; |
| } PSAPI_WORKING_SET_EX_INFORMATION, *PPSAPI_WORKING_SET_EX_INFORMATION; |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| #endif |