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