|  | /** | 
|  | * 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 (CALLBACK *PENUM_PAGE_FILE_CALLBACKW) (LPVOID pContext,PENUM_PAGE_FILE_INFORMATION pPageFileInfo,LPCWSTR lpFilename); | 
|  | typedef WINBOOL (CALLBACK *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 |