OSDN Git Service

Make <winnls.h> header effectively self-contained.
[mingw/mingw-org-wsl.git] / w32api / include / psapi.h
1 /*
2         psapi.h - Include file for PSAPI.DLL APIs
3
4         Written by Mumit Khan <khan@nanotech.wisc.edu>
5
6         This file is part of a free library for the Win32 API.
7
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.
11
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.
15
16 */
17 #ifndef _PSAPI_H
18 #define _PSAPI_H
19 #if __GNUC__ >=3
20 #pragma GCC system_header
21 #endif
22
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26
27 #ifndef RC_INVOKED
28
29 typedef struct _MODULEINFO {
30         LPVOID lpBaseOfDll;
31         DWORD SizeOfImage;
32         LPVOID EntryPoint;
33 } MODULEINFO,*LPMODULEINFO;
34
35 typedef struct _PSAPI_WS_WATCH_INFORMATION {
36         LPVOID FaultingPc;
37         LPVOID FaultingVa;
38 } PSAPI_WS_WATCH_INFORMATION,*PPSAPI_WS_WATCH_INFORMATION;
39
40 typedef struct _PROCESS_MEMORY_COUNTERS {
41         DWORD cb;
42         DWORD PageFaultCount;
43         DWORD PeakWorkingSetSize;
44         DWORD WorkingSetSize;
45         DWORD QuotaPeakPagedPoolUsage;
46         DWORD QuotaPagedPoolUsage;
47         DWORD QuotaPeakNonPagedPoolUsage;
48         DWORD QuotaNonPagedPoolUsage;
49         DWORD PagefileUsage;
50         DWORD PeakPagefileUsage;
51 } PROCESS_MEMORY_COUNTERS,*PPROCESS_MEMORY_COUNTERS;
52
53 typedef struct _PROCESS_MEMORY_COUNTERS_EX {
54         DWORD cb;
55         DWORD PageFaultCount;
56         DWORD PeakWorkingSetSize;
57         DWORD WorkingSetSize;
58         DWORD QuotaPeakPagedPoolUsage;
59         DWORD QuotaPagedPoolUsage;
60         DWORD QuotaPeakNonPagedPoolUsage;
61         DWORD QuotaNonPagedPoolUsage;
62         DWORD PagefileUsage;
63         DWORD PeakPagefileUsage;
64         DWORD PrivateUsage;
65 } PROCESS_MEMORY_COUNTERS_EX,*PPROCESS_MEMORY_COUNTERS_EX;
66
67 typedef struct _PERFORMANCE_INFORMATION {
68   DWORD cb;
69   DWORD CommitTotal;
70   DWORD CommitLimit;
71   DWORD CommitPeak;
72   DWORD PhysicalTotal;
73   DWORD PhysicalAvailable;
74   DWORD SystemCache;
75   DWORD KernelTotal;
76   DWORD KernelPaged;
77   DWORD KernelNonpaged;
78   DWORD PageSize;
79   DWORD HandleCount;
80   DWORD ProcessCount;
81   DWORD ThreadCount;
82 } PERFORMANCE_INFORMATION, *PPERFORMANCE_INFORMATION;
83
84 typedef union _PSAPI_WORKING_SET_BLOCK {
85   ULONG_PTR Flags;
86   struct {
87     ULONG_PTR Protection  :5;
88     ULONG_PTR ShareCount  :3;
89     ULONG_PTR Shared  :1;
90     ULONG_PTR Reserved  :3;
91     ULONG_PTR VirtualPage  :20;
92   } ;
93 } PSAPI_WORKING_SET_BLOCK, *PPSAPI_WORKING_SET_BLOCK;
94
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;
99
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);
124 #endif
125
126 #endif /* not RC_INVOKED */
127
128 #ifdef UNICODE
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
136 #endif
137 #else
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
145 #endif
146 #endif
147
148 #ifdef __cplusplus
149 }
150 #endif
151
152 #endif /* _PSAPI_H */
153