]> git.ipfire.org Git - thirdparty/gcc.git/blob - libphobos/libdruntime/core/sys/windows/psapi.d
Add D front-end, libphobos library, and D2 testsuite.
[thirdparty/gcc.git] / libphobos / libdruntime / core / sys / windows / psapi.d
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 src/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;
15 version (Windows):
16
17 version (ANSI) {} else version = Unicode;
18
19 private import core.sys.windows.w32api;
20 private import core.sys.windows.winbase;
21 private import core.sys.windows.windef;
22
23 struct MODULEINFO {
24 LPVOID lpBaseOfDll;
25 DWORD SizeOfImage;
26 LPVOID EntryPoint;
27 }
28 alias MODULEINFO* LPMODULEINFO;
29
30 struct PSAPI_WS_WATCH_INFORMATION {
31 LPVOID FaultingPc;
32 LPVOID FaultingVa;
33 }
34 alias PSAPI_WS_WATCH_INFORMATION* PPSAPI_WS_WATCH_INFORMATION;
35
36 struct PSAPI_WS_WATCH_INFORMATION_EX {
37 PSAPI_WS_WATCH_INFORMATION BasicInfo;
38 ULONG_PTR FaultingThreadId;
39 ULONG_PTR Flags;
40 }
41 alias PSAPI_WS_WATCH_INFORMATION_EX* PPSAPI_WS_WATCH_INFORMATION_EX;
42
43 struct PROCESS_MEMORY_COUNTERS {
44 DWORD cb;
45 DWORD PageFaultCount;
46 SIZE_T PeakWorkingSetSize;
47 SIZE_T WorkingSetSize;
48 SIZE_T QuotaPeakPagedPoolUsage;
49 SIZE_T QuotaPagedPoolUsage;
50 SIZE_T QuotaPeakNonPagedPoolUsage;
51 SIZE_T QuotaNonPagedPoolUsage;
52 SIZE_T PagefileUsage;
53 SIZE_T PeakPagefileUsage;
54 }
55 alias PROCESS_MEMORY_COUNTERS* PPROCESS_MEMORY_COUNTERS;
56
57 struct PERFORMANCE_INFORMATION {
58 DWORD cb;
59 SIZE_T CommitTotal;
60 SIZE_T CommitLimit;
61 SIZE_T CommitPeak;
62 SIZE_T PhysicalTotal;
63 SIZE_T PhysicalAvailable;
64 SIZE_T SystemCache;
65 SIZE_T KernelTotal;
66 SIZE_T KernelPaged;
67 SIZE_T KernelNonpaged;
68 SIZE_T PageSize;
69 DWORD HandleCount;
70 DWORD ProcessCount;
71 DWORD ThreadCount;
72 }
73 alias PERFORMANCE_INFORMATION* PPERFORMANCE_INFORMATION;
74
75 struct ENUM_PAGE_FILE_INFORMATION {
76 DWORD cb;
77 DWORD Reserved;
78 SIZE_T TotalSize;
79 SIZE_T TotalInUse;
80 SIZE_T PeakUsage;
81 }
82 alias ENUM_PAGE_FILE_INFORMATION* PENUM_PAGE_FILE_INFORMATION;
83
84 /* application-defined callback function used with the EnumPageFiles()
85 * http://windowssdk.msdn.microsoft.com/library/ms682627.aspx */
86 version (Unicode) {
87 alias BOOL function(LPVOID, PENUM_PAGE_FILE_INFORMATION, LPCWSTR)
88 PENUM_PAGE_FILE_CALLBACK;
89 } else {
90 alias BOOL function(LPVOID, PENUM_PAGE_FILE_INFORMATION, LPCSTR)
91 PENUM_PAGE_FILE_CALLBACK;
92 }
93
94 // Grouped by application, not in alphabetical order.
95 extern (Windows) {
96 /* Process Information
97 * http://windowssdk.msdn.microsoft.com/library/ms684870.aspx */
98 BOOL EnumProcesses(DWORD*, DWORD, DWORD*); /* NT/2000/XP/Server2003/Vista/Longhorn */
99 DWORD GetProcessImageFileNameA(HANDLE, LPSTR, DWORD); /* XP/Server2003/Vista/Longhorn */
100 DWORD GetProcessImageFileNameW(HANDLE, LPWSTR, DWORD); /* XP/Server2003/Vista/Longhorn */
101
102 /* Module Information
103 * http://windowssdk.msdn.microsoft.com/library/ms684232.aspx */
104 BOOL EnumProcessModules(HANDLE, HMODULE*, DWORD, LPDWORD);
105 BOOL EnumProcessModulesEx(HANDLE, HMODULE*, DWORD, LPDWORD, DWORD); /* Vista/Longhorn */
106 DWORD GetModuleBaseNameA(HANDLE, HMODULE, LPSTR, DWORD);
107 DWORD GetModuleBaseNameW(HANDLE, HMODULE, LPWSTR, DWORD);
108 DWORD GetModuleFileNameExA(HANDLE, HMODULE, LPSTR, DWORD);
109 DWORD GetModuleFileNameExW(HANDLE, HMODULE, LPWSTR, DWORD);
110 BOOL GetModuleInformation(HANDLE, HMODULE, LPMODULEINFO, DWORD);
111
112 /* Device Driver Information
113 * http://windowssdk.msdn.microsoft.com/library/ms682578.aspx */
114 BOOL EnumDeviceDrivers(LPVOID*, DWORD, LPDWORD);
115 DWORD GetDeviceDriverBaseNameA(LPVOID, LPSTR, DWORD);
116 DWORD GetDeviceDriverBaseNameW(LPVOID, LPWSTR, DWORD);
117 DWORD GetDeviceDriverFileNameA(LPVOID, LPSTR, DWORD);
118 DWORD GetDeviceDriverFileNameW(LPVOID, LPWSTR, DWORD);
119
120 /* Process Memory Usage Information
121 * http://windowssdk.msdn.microsoft.com/library/ms684879.aspx */
122 BOOL GetProcessMemoryInfo(HANDLE, PPROCESS_MEMORY_COUNTERS, DWORD);
123
124 /* Working Set Information
125 * http://windowssdk.msdn.microsoft.com/library/ms687398.aspx */
126 BOOL EmptyWorkingSet(HANDLE);
127 BOOL GetWsChanges(HANDLE, PPSAPI_WS_WATCH_INFORMATION, DWORD);
128 BOOL GetWsChangesEx(HANDLE, PPSAPI_WS_WATCH_INFORMATION_EX, DWORD); /* Vista/Longhorn */
129 BOOL InitializeProcessForWsWatch(HANDLE);
130 BOOL QueryWorkingSet(HANDLE, PVOID, DWORD);
131 BOOL QueryWorkingSetEx(HANDLE, PVOID, DWORD);
132
133 /* Memory-Mapped File Information
134 * http://windowssdk.msdn.microsoft.com/library/ms684212.aspx */
135 DWORD GetMappedFileNameW(HANDLE, LPVOID, LPWSTR, DWORD);
136 DWORD GetMappedFileNameA(HANDLE, LPVOID, LPSTR, DWORD);
137
138 /* Resources Information */
139 BOOL GetPerformanceInfo(PPERFORMANCE_INFORMATION, DWORD); /* XP/Server2003/Vista/Longhorn */
140 BOOL EnumPageFilesW(PENUM_PAGE_FILE_CALLBACK, LPVOID); /* 2000/XP/Server2003/Vista/Longhorn */
141 BOOL EnumPageFilesA(PENUM_PAGE_FILE_CALLBACK, LPVOID); /* 2000/XP/Server2003/Vista/Longhorn */
142 }
143
144 version (Unicode) {
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 GetModuleBaseNameA GetModuleBaseName;
154 alias GetModuleFileNameExA GetModuleFileNameEx;
155 alias GetMappedFileNameA GetMappedFileName;
156 alias GetDeviceDriverBaseNameA GetDeviceDriverBaseName;
157 alias GetDeviceDriverFileNameA GetDeviceDriverFileName;
158 alias EnumPageFilesA EnumPageFiles;
159 alias GetProcessImageFileNameA GetProcessImageFileName;
160 }