xref: /netbsd-src/external/gpl3/gcc/dist/libphobos/libdruntime/core/sys/windows/psapi.d (revision 0a3071956a3a9fdebdbf7f338cf2d439b45fc728)
1 /**
2  * Windows API header module
3  *
4  * Translated from MinGW Windows headers
5  *
6  * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
7  * Source: $(DRUNTIMESRC core/sys/windows/_psapi.d)
8  */
9 /* Comment from MinGW
10  *   Process status API (PSAPI)
11  *   http://windowssdk.msdn.microsoft.com/library/ms684884.aspx
12  */
13 
14 module core.sys.windows.psapi;
version(Windows)15 version (Windows):
16 @system:
17 
18 version (ANSI) {} else version = Unicode;
19 
20 import core.sys.windows.w32api;
21 import core.sys.windows.winbase;
22 import core.sys.windows.windef;
23 
24 struct MODULEINFO {
25     LPVOID lpBaseOfDll;
26     DWORD SizeOfImage;
27     LPVOID EntryPoint;
28 }
29 alias MODULEINFO* LPMODULEINFO;
30 
31 struct PSAPI_WS_WATCH_INFORMATION {
32     LPVOID FaultingPc;
33     LPVOID FaultingVa;
34 }
35 alias PSAPI_WS_WATCH_INFORMATION* PPSAPI_WS_WATCH_INFORMATION;
36 
37 struct PSAPI_WS_WATCH_INFORMATION_EX {
38     PSAPI_WS_WATCH_INFORMATION BasicInfo;
39     ULONG_PTR FaultingThreadId;
40     ULONG_PTR Flags;
41 }
42 alias PSAPI_WS_WATCH_INFORMATION_EX* PPSAPI_WS_WATCH_INFORMATION_EX;
43 
44 struct PROCESS_MEMORY_COUNTERS {
45     DWORD cb;
46     DWORD PageFaultCount;
47     SIZE_T PeakWorkingSetSize;
48     SIZE_T WorkingSetSize;
49     SIZE_T QuotaPeakPagedPoolUsage;
50     SIZE_T QuotaPagedPoolUsage;
51     SIZE_T QuotaPeakNonPagedPoolUsage;
52     SIZE_T QuotaNonPagedPoolUsage;
53     SIZE_T PagefileUsage;
54     SIZE_T PeakPagefileUsage;
55 }
56 alias PROCESS_MEMORY_COUNTERS* PPROCESS_MEMORY_COUNTERS;
57 
58 struct PERFORMANCE_INFORMATION {
59     DWORD cb;
60     SIZE_T CommitTotal;
61     SIZE_T CommitLimit;
62     SIZE_T CommitPeak;
63     SIZE_T PhysicalTotal;
64     SIZE_T PhysicalAvailable;
65     SIZE_T SystemCache;
66     SIZE_T KernelTotal;
67     SIZE_T KernelPaged;
68     SIZE_T KernelNonpaged;
69     SIZE_T PageSize;
70     DWORD HandleCount;
71     DWORD ProcessCount;
72     DWORD ThreadCount;
73 }
74 alias PERFORMANCE_INFORMATION* PPERFORMANCE_INFORMATION;
75 
76 struct ENUM_PAGE_FILE_INFORMATION {
77     DWORD cb;
78     DWORD Reserved;
79     SIZE_T TotalSize;
80     SIZE_T TotalInUse;
81     SIZE_T PeakUsage;
82 }
83 alias ENUM_PAGE_FILE_INFORMATION* PENUM_PAGE_FILE_INFORMATION;
84 
85 /* application-defined callback function used with the EnumPageFiles()
86  * http://windowssdk.msdn.microsoft.com/library/ms682627.aspx */
87 alias BOOL function(LPVOID, PENUM_PAGE_FILE_INFORMATION, LPCWSTR)
88     PENUM_PAGE_FILE_CALLBACKW;
89 alias BOOL function(LPVOID, PENUM_PAGE_FILE_INFORMATION, LPCSTR)
90     PENUM_PAGE_FILE_CALLBACKA;
91 
92 
93 // Grouped by application, not in alphabetical order.
94 extern (Windows) {
95     /* Process Information
96      * http://windowssdk.msdn.microsoft.com/library/ms684870.aspx */
97     BOOL EnumProcesses(DWORD*, DWORD, DWORD*); /* NT/2000/XP/Server2003/Vista/Longhorn */
98     DWORD GetProcessImageFileNameA(HANDLE, LPSTR, DWORD); /* XP/Server2003/Vista/Longhorn */
99     DWORD GetProcessImageFileNameW(HANDLE, LPWSTR, DWORD); /* XP/Server2003/Vista/Longhorn */
100 
101     /* Module Information
102      * http://windowssdk.msdn.microsoft.com/library/ms684232.aspx */
103     BOOL EnumProcessModules(HANDLE, HMODULE*, DWORD, LPDWORD);
104     BOOL EnumProcessModulesEx(HANDLE, HMODULE*, DWORD, LPDWORD, DWORD); /* Vista/Longhorn */
105     DWORD GetModuleBaseNameA(HANDLE, HMODULE, LPSTR, DWORD);
106     DWORD GetModuleBaseNameW(HANDLE, HMODULE, LPWSTR, DWORD);
107     DWORD GetModuleFileNameExA(HANDLE, HMODULE, LPSTR, DWORD);
108     DWORD GetModuleFileNameExW(HANDLE, HMODULE, LPWSTR, DWORD);
109     BOOL GetModuleInformation(HANDLE, HMODULE, LPMODULEINFO, DWORD);
110 
111     /* Device Driver Information
112      * http://windowssdk.msdn.microsoft.com/library/ms682578.aspx */
113     BOOL EnumDeviceDrivers(LPVOID*, DWORD, LPDWORD);
114     DWORD GetDeviceDriverBaseNameA(LPVOID, LPSTR, DWORD);
115     DWORD GetDeviceDriverBaseNameW(LPVOID, LPWSTR, DWORD);
116     DWORD GetDeviceDriverFileNameA(LPVOID, LPSTR, DWORD);
117     DWORD GetDeviceDriverFileNameW(LPVOID, LPWSTR, DWORD);
118 
119     /* Process Memory Usage Information
120      * http://windowssdk.msdn.microsoft.com/library/ms684879.aspx */
121     BOOL GetProcessMemoryInfo(HANDLE, PPROCESS_MEMORY_COUNTERS, DWORD);
122 
123     /* Working Set Information
124      * http://windowssdk.msdn.microsoft.com/library/ms687398.aspx */
125     BOOL EmptyWorkingSet(HANDLE);
126     BOOL GetWsChanges(HANDLE, PPSAPI_WS_WATCH_INFORMATION, DWORD);
127     BOOL GetWsChangesEx(HANDLE, PPSAPI_WS_WATCH_INFORMATION_EX, DWORD); /* Vista/Longhorn */
128     BOOL InitializeProcessForWsWatch(HANDLE);
129     BOOL QueryWorkingSet(HANDLE, PVOID, DWORD);
130     BOOL QueryWorkingSetEx(HANDLE, PVOID, DWORD);
131 
132     /* Memory-Mapped File Information
133      * http://windowssdk.msdn.microsoft.com/library/ms684212.aspx */
134     DWORD GetMappedFileNameW(HANDLE, LPVOID, LPWSTR, DWORD);
135     DWORD GetMappedFileNameA(HANDLE, LPVOID, LPSTR, DWORD);
136 
137     /* Resources Information */
138     BOOL GetPerformanceInfo(PPERFORMANCE_INFORMATION, DWORD); /* XP/Server2003/Vista/Longhorn */
139     BOOL EnumPageFilesW(PENUM_PAGE_FILE_CALLBACKW, LPVOID); /* 2000/XP/Server2003/Vista/Longhorn */
140     BOOL EnumPageFilesA(PENUM_PAGE_FILE_CALLBACKA, LPVOID); /* 2000/XP/Server2003/Vista/Longhorn */
141 }
142 
version(Unicode)143 version (Unicode) {
144     alias PENUM_PAGE_FILE_CALLBACKW PENUM_PAGE_FILE_CALLBACK;
145     alias GetModuleBaseNameW GetModuleBaseName;
146     alias GetModuleFileNameExW GetModuleFileNameEx;
147     alias GetMappedFileNameW GetMappedFileName;
148     alias GetDeviceDriverBaseNameW GetDeviceDriverBaseName;
149     alias GetDeviceDriverFileNameW GetDeviceDriverFileName;
150     alias EnumPageFilesW EnumPageFiles;
151     alias GetProcessImageFileNameW GetProcessImageFileName;
152 } else {
153     alias PENUM_PAGE_FILE_CALLBACKA PENUM_PAGE_FILE_CALLBACK;
154     alias GetModuleBaseNameA GetModuleBaseName;
155     alias GetModuleFileNameExA GetModuleFileNameEx;
156     alias GetMappedFileNameA GetMappedFileName;
157     alias GetDeviceDriverBaseNameA GetDeviceDriverBaseName;
158     alias GetDeviceDriverFileNameA GetDeviceDriverFileName;
159     alias EnumPageFilesA EnumPageFiles;
160     alias GetProcessImageFileNameA GetProcessImageFileName;
161 }
162