OSDN Git Service

Redo the filters based on assumptions discussed in mingw-dvlpr list.
[mingw/mingw-org-wsl.git] / include / psapi.h
1 /**
2  * @file psapi.h
3  * @copy 2012 MinGW.org project
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a
6  * copy of this software and associated documentation files (the "Software"),
7  * to deal in the Software without restriction, including without limitation
8  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9  * and/or sell copies of the Software, and to permit persons to whom the
10  * Software is furnished to do so, subject to the following conditions:
11  * 
12  * The above copyright notice and this permission notice (including the next
13  * paragraph) shall be included in all copies or substantial portions of the
14  * Software.
15  * 
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22  * DEALINGS IN THE SOFTWARE.
23  */
24 #ifndef _PSAPI_H
25 #define _PSAPI_H
26 #pragma GCC system_header
27
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31
32 #ifndef RC_INVOKED
33
34 typedef struct _MODULEINFO {
35         LPVOID lpBaseOfDll;
36         DWORD SizeOfImage;
37         LPVOID EntryPoint;
38 } MODULEINFO,*LPMODULEINFO;
39
40 typedef struct _PSAPI_WS_WATCH_INFORMATION {
41         LPVOID FaultingPc;
42         LPVOID FaultingVa;
43 } PSAPI_WS_WATCH_INFORMATION,*PPSAPI_WS_WATCH_INFORMATION;
44
45 typedef struct _PROCESS_MEMORY_COUNTERS {
46         DWORD cb;
47         DWORD PageFaultCount;
48         DWORD PeakWorkingSetSize;
49         DWORD WorkingSetSize;
50         DWORD QuotaPeakPagedPoolUsage;
51         DWORD QuotaPagedPoolUsage;
52         DWORD QuotaPeakNonPagedPoolUsage;
53         DWORD QuotaNonPagedPoolUsage;
54         DWORD PagefileUsage;
55         DWORD PeakPagefileUsage;
56 } PROCESS_MEMORY_COUNTERS,*PPROCESS_MEMORY_COUNTERS;
57
58 typedef struct _PROCESS_MEMORY_COUNTERS_EX {
59         DWORD cb;
60         DWORD PageFaultCount;
61         DWORD PeakWorkingSetSize;
62         DWORD WorkingSetSize;
63         DWORD QuotaPeakPagedPoolUsage;
64         DWORD QuotaPagedPoolUsage;
65         DWORD QuotaPeakNonPagedPoolUsage;
66         DWORD QuotaNonPagedPoolUsage;
67         DWORD PagefileUsage;
68         DWORD PeakPagefileUsage;
69         DWORD PrivateUsage;
70 } PROCESS_MEMORY_COUNTERS_EX,*PPROCESS_MEMORY_COUNTERS_EX;
71
72 typedef struct _PERFORMANCE_INFORMATION {
73   DWORD cb;
74   DWORD CommitTotal;
75   DWORD CommitLimit;
76   DWORD CommitPeak;
77   DWORD PhysicalTotal;
78   DWORD PhysicalAvailable;
79   DWORD SystemCache;
80   DWORD KernelTotal;
81   DWORD KernelPaged;
82   DWORD KernelNonpaged;
83   DWORD PageSize;
84   DWORD HandleCount;
85   DWORD ProcessCount;
86   DWORD ThreadCount;
87 } PERFORMANCE_INFORMATION, *PPERFORMANCE_INFORMATION;
88
89 typedef union _PSAPI_WORKING_SET_BLOCK {
90   ULONG_PTR Flags;
91   struct {
92     ULONG_PTR Protection  :5;
93     ULONG_PTR ShareCount  :3;
94     ULONG_PTR Shared  :1;
95     ULONG_PTR Reserved  :3;
96     ULONG_PTR VirtualPage  :20;
97   } ;
98 } PSAPI_WORKING_SET_BLOCK, *PPSAPI_WORKING_SET_BLOCK;
99
100 typedef struct _PSAPI_WORKING_SET_INFORMATION {
101   ULONG_PTR               NumberOfEntries;
102   PSAPI_WORKING_SET_BLOCK WorkingSetInfo[1];
103 } PSAPI_WORKING_SET_INFORMATION, *PPSAPI_WORKING_SET_INFORMATION;
104
105 /* Grouped by application,not in alphabetical order. */
106 BOOL WINAPI EnumProcesses(DWORD *,DWORD,DWORD *);
107 BOOL WINAPI EnumProcessModules(HANDLE,HMODULE *,DWORD,LPDWORD);
108 DWORD WINAPI GetModuleBaseNameA(HANDLE,HMODULE,LPSTR,DWORD);
109 DWORD WINAPI GetModuleBaseNameW(HANDLE,HMODULE,LPWSTR,DWORD);
110 DWORD WINAPI GetModuleFileNameExA(HANDLE,HMODULE,LPSTR,DWORD);
111 DWORD WINAPI GetModuleFileNameExW(HANDLE,HMODULE,LPWSTR,DWORD);
112 BOOL WINAPI GetModuleInformation(HANDLE,HMODULE,LPMODULEINFO,DWORD);
113 BOOL WINAPI EmptyWorkingSet(HANDLE);
114 BOOL WINAPI QueryWorkingSet(HANDLE,PVOID,DWORD);
115 BOOL WINAPI InitializeProcessForWsWatch(HANDLE);
116 BOOL WINAPI GetWsChanges(HANDLE,PPSAPI_WS_WATCH_INFORMATION,DWORD);
117 DWORD WINAPI GetMappedFileNameW(HANDLE,LPVOID,LPWSTR,DWORD);
118 DWORD WINAPI GetMappedFileNameA(HANDLE,LPVOID,LPSTR,DWORD);
119 BOOL WINAPI EnumDeviceDrivers(LPVOID *,DWORD,LPDWORD);
120 DWORD WINAPI GetDeviceDriverBaseNameA(LPVOID,LPSTR,DWORD);
121 DWORD WINAPI GetDeviceDriverBaseNameW(LPVOID,LPWSTR,DWORD);
122 DWORD WINAPI GetDeviceDriverFileNameA(LPVOID,LPSTR,DWORD);
123 DWORD WINAPI GetDeviceDriverFileNameW(LPVOID,LPWSTR,DWORD);
124 BOOL WINAPI GetProcessMemoryInfo(HANDLE,PPROCESS_MEMORY_COUNTERS,DWORD);
125 BOOL WINAPI GetPerformanceInfo(PPERFORMANCE_INFORMATION,DWORD);
126 #if (_WIN32_WINNT >= 0x0501)
127 DWORD WINAPI GetProcessImageFileNameA(HANDLE,LPSTR,DWORD);
128 DWORD WINAPI GetProcessImageFileNameW(HANDLE,LPWSTR,DWORD);
129 #endif
130
131 #endif /* not RC_INVOKED */
132
133 #ifdef UNICODE
134 #define GetModuleBaseName GetModuleBaseNameW
135 #define GetModuleFileNameEx GetModuleFileNameExW
136 #define GetMappedFileName GetMappedFileNameW
137 #define GetDeviceDriverBaseName GetDeviceDriverBaseNameW
138 #define GetDeviceDriverFileName GetDeviceDriverFileNameW
139 #if (_WIN32_WINNT >= 0x0501)
140 #define GetProcessImageFileName GetProcessImageFileNameW
141 #endif
142 #else
143 #define GetModuleBaseName GetModuleBaseNameA
144 #define GetModuleFileNameEx GetModuleFileNameExA
145 #define GetMappedFileName GetMappedFileNameA
146 #define GetDeviceDriverBaseName GetDeviceDriverBaseNameA
147 #define GetDeviceDriverFileName GetDeviceDriverFileNameA
148 #if (_WIN32_WINNT >= 0x0501)
149 #define GetProcessImageFileName GetProcessImageFileNameA
150 #endif
151 #endif
152
153 #ifdef __cplusplus
154 }
155 #endif
156
157 #endif /* _PSAPI_H */
158