OSDN Git Service

Correct mistyped __MINGW_NOTHROW macro.
[mingw/mingw-org-wsl.git] / include / psapi.h
1 /**
2  * @file psapi.h
3  * Copyright 2012, 2013 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 /* Written by Mumit Khan <khan@nanotech.wisc.edu> */
25 #ifndef _PSAPI_H
26 #define _PSAPI_H
27 #pragma GCC system_header
28 #include <_mingw.h>
29
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33
34 #ifndef RC_INVOKED
35
36 typedef struct _MODULEINFO {
37         LPVOID lpBaseOfDll;
38         DWORD SizeOfImage;
39         LPVOID EntryPoint;
40 } MODULEINFO,*LPMODULEINFO;
41
42 typedef struct _PSAPI_WS_WATCH_INFORMATION {
43         LPVOID FaultingPc;
44         LPVOID FaultingVa;
45 } PSAPI_WS_WATCH_INFORMATION,*PPSAPI_WS_WATCH_INFORMATION;
46
47 typedef struct _PROCESS_MEMORY_COUNTERS {
48         DWORD cb;
49         DWORD PageFaultCount;
50         DWORD PeakWorkingSetSize;
51         DWORD WorkingSetSize;
52         DWORD QuotaPeakPagedPoolUsage;
53         DWORD QuotaPagedPoolUsage;
54         DWORD QuotaPeakNonPagedPoolUsage;
55         DWORD QuotaNonPagedPoolUsage;
56         DWORD PagefileUsage;
57         DWORD PeakPagefileUsage;
58 } PROCESS_MEMORY_COUNTERS,*PPROCESS_MEMORY_COUNTERS;
59
60 typedef struct _PROCESS_MEMORY_COUNTERS_EX {
61         DWORD cb;
62         DWORD PageFaultCount;
63         DWORD PeakWorkingSetSize;
64         DWORD WorkingSetSize;
65         DWORD QuotaPeakPagedPoolUsage;
66         DWORD QuotaPagedPoolUsage;
67         DWORD QuotaPeakNonPagedPoolUsage;
68         DWORD QuotaNonPagedPoolUsage;
69         DWORD PagefileUsage;
70         DWORD PeakPagefileUsage;
71         DWORD PrivateUsage;
72 } PROCESS_MEMORY_COUNTERS_EX,*PPROCESS_MEMORY_COUNTERS_EX;
73
74 typedef struct _PERFORMANCE_INFORMATION {
75   DWORD cb;
76   DWORD CommitTotal;
77   DWORD CommitLimit;
78   DWORD CommitPeak;
79   DWORD PhysicalTotal;
80   DWORD PhysicalAvailable;
81   DWORD SystemCache;
82   DWORD KernelTotal;
83   DWORD KernelPaged;
84   DWORD KernelNonpaged;
85   DWORD PageSize;
86   DWORD HandleCount;
87   DWORD ProcessCount;
88   DWORD ThreadCount;
89 } PERFORMANCE_INFORMATION, *PPERFORMANCE_INFORMATION;
90
91 typedef union _PSAPI_WORKING_SET_BLOCK {
92   ULONG_PTR Flags;
93   struct {
94     ULONG_PTR Protection  :5;
95     ULONG_PTR ShareCount  :3;
96     ULONG_PTR Shared  :1;
97     ULONG_PTR Reserved  :3;
98     ULONG_PTR VirtualPage  :20;
99   } ;
100 } PSAPI_WORKING_SET_BLOCK, *PPSAPI_WORKING_SET_BLOCK;
101
102 typedef struct _PSAPI_WORKING_SET_INFORMATION {
103   ULONG_PTR               NumberOfEntries;
104   PSAPI_WORKING_SET_BLOCK WorkingSetInfo[1];
105 } PSAPI_WORKING_SET_INFORMATION, *PPSAPI_WORKING_SET_INFORMATION;
106
107 /* Grouped by application,not in alphabetical order. */
108 BOOL WINAPI EnumProcesses(DWORD *,DWORD,DWORD *);
109 BOOL WINAPI EnumProcessModules(HANDLE,HMODULE *,DWORD,LPDWORD);
110 DWORD WINAPI GetModuleBaseNameA(HANDLE,HMODULE,LPSTR,DWORD);
111 DWORD WINAPI GetModuleBaseNameW(HANDLE,HMODULE,LPWSTR,DWORD);
112 DWORD WINAPI GetModuleFileNameExA(HANDLE,HMODULE,LPSTR,DWORD);
113 DWORD WINAPI GetModuleFileNameExW(HANDLE,HMODULE,LPWSTR,DWORD);
114 BOOL WINAPI GetModuleInformation(HANDLE,HMODULE,LPMODULEINFO,DWORD);
115 BOOL WINAPI EmptyWorkingSet(HANDLE);
116 BOOL WINAPI QueryWorkingSet(HANDLE,PVOID,DWORD);
117 BOOL WINAPI InitializeProcessForWsWatch(HANDLE);
118 BOOL WINAPI GetWsChanges(HANDLE,PPSAPI_WS_WATCH_INFORMATION,DWORD);
119 DWORD WINAPI GetMappedFileNameW(HANDLE,LPVOID,LPWSTR,DWORD);
120 DWORD WINAPI GetMappedFileNameA(HANDLE,LPVOID,LPSTR,DWORD);
121 BOOL WINAPI EnumDeviceDrivers(LPVOID *,DWORD,LPDWORD);
122 DWORD WINAPI GetDeviceDriverBaseNameA(LPVOID,LPSTR,DWORD);
123 DWORD WINAPI GetDeviceDriverBaseNameW(LPVOID,LPWSTR,DWORD);
124 DWORD WINAPI GetDeviceDriverFileNameA(LPVOID,LPSTR,DWORD);
125 DWORD WINAPI GetDeviceDriverFileNameW(LPVOID,LPWSTR,DWORD);
126 BOOL WINAPI GetProcessMemoryInfo(HANDLE,PPROCESS_MEMORY_COUNTERS,DWORD);
127 BOOL WINAPI GetPerformanceInfo(PPERFORMANCE_INFORMATION,DWORD);
128
129 #define GetModuleBaseName __AW(GetModuleBaseName)
130 #define GetModuleFileNameEx __AW(GetModuleFileNameEx)
131 #define GetMappedFileName __AW(GetMappedFileName)
132 #define GetDeviceDriverBaseName __AW(GetDeviceDriverBaseName)
133 #define GetDeviceDriverFileName __AW(GetDeviceDriverFileName)
134
135 #if (_WIN32_WINNT >= _WIN32_WINNT_WINXP)
136 DWORD WINAPI GetProcessImageFileNameA(HANDLE,LPSTR,DWORD);
137 DWORD WINAPI GetProcessImageFileNameW(HANDLE,LPWSTR,DWORD);
138 #define GetProcessImageFileName __AW(GetProcessImageFileName)
139 #endif /* _WIN32_WINNT >= _WIN32_WINNT_WINXP */
140
141 #endif /* not RC_INVOKED */
142
143 #ifdef __cplusplus
144 }
145 #endif
146
147 #endif /* _PSAPI_H */
148