root/trunk/win32/psapi.d

Revision 325, 5.8 kB (checked in by SnakE, 3 years ago)

Fixed calling convention for PSAPI

The PSAPI functions actually use Windows calling convention, not C.

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