zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

psapi.h (9313B) - Raw


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