4e2933c620 2015-04-21 kinaba: /***********************************************************************\ 4e2933c620 2015-04-21 kinaba: * psapi.d * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Windows API header module * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Translated from MinGW Windows headers * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Placed into public domain * 4e2933c620 2015-04-21 kinaba: \***********************************************************************/ 4e2933c620 2015-04-21 kinaba: /* Comment from MinGW 4e2933c620 2015-04-21 kinaba: * Process status API (PSAPI) 4e2933c620 2015-04-21 kinaba: * http://windowssdk.msdn.microsoft.com/library/ms684884.aspx 4e2933c620 2015-04-21 kinaba: */ 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: module win32.psapi; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: private import win32.w32api; 4e2933c620 2015-04-21 kinaba: private import win32.winbase; 4e2933c620 2015-04-21 kinaba: private import win32.windef; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct MODULEINFO { 4e2933c620 2015-04-21 kinaba: LPVOID lpBaseOfDll; 4e2933c620 2015-04-21 kinaba: DWORD SizeOfImage; 4e2933c620 2015-04-21 kinaba: LPVOID EntryPoint; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias MODULEINFO* LPMODULEINFO; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct PSAPI_WS_WATCH_INFORMATION { 4e2933c620 2015-04-21 kinaba: LPVOID FaultingPc; 4e2933c620 2015-04-21 kinaba: LPVOID FaultingVa; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias PSAPI_WS_WATCH_INFORMATION* PPSAPI_WS_WATCH_INFORMATION; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct PSAPI_WS_WATCH_INFORMATION_EX { 4e2933c620 2015-04-21 kinaba: PSAPI_WS_WATCH_INFORMATION BasicInfo; 4e2933c620 2015-04-21 kinaba: ULONG_PTR FaultingThreadId; 4e2933c620 2015-04-21 kinaba: ULONG_PTR Flags; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias PSAPI_WS_WATCH_INFORMATION_EX* PPSAPI_WS_WATCH_INFORMATION_EX; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct PROCESS_MEMORY_COUNTERS { 4e2933c620 2015-04-21 kinaba: DWORD cb; 4e2933c620 2015-04-21 kinaba: DWORD PageFaultCount; 4e2933c620 2015-04-21 kinaba: DWORD PeakWorkingSetSize; 4e2933c620 2015-04-21 kinaba: DWORD WorkingSetSize; 4e2933c620 2015-04-21 kinaba: DWORD QuotaPeakPagedPoolUsage; 4e2933c620 2015-04-21 kinaba: DWORD QuotaPagedPoolUsage; 4e2933c620 2015-04-21 kinaba: DWORD QuotaPeakNonPagedPoolUsage; 4e2933c620 2015-04-21 kinaba: DWORD QuotaNonPagedPoolUsage; 4e2933c620 2015-04-21 kinaba: DWORD PagefileUsage; 4e2933c620 2015-04-21 kinaba: DWORD PeakPagefileUsage; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias PROCESS_MEMORY_COUNTERS* PPROCESS_MEMORY_COUNTERS; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct PERFORMANCE_INFORMATION { 4e2933c620 2015-04-21 kinaba: DWORD cb; 4e2933c620 2015-04-21 kinaba: SIZE_T CommitTotal; 4e2933c620 2015-04-21 kinaba: SIZE_T CommitLimit; 4e2933c620 2015-04-21 kinaba: SIZE_T CommitPeak; 4e2933c620 2015-04-21 kinaba: SIZE_T PhysicalTotal; 4e2933c620 2015-04-21 kinaba: SIZE_T PhysicalAvailable; 4e2933c620 2015-04-21 kinaba: SIZE_T SystemCache; 4e2933c620 2015-04-21 kinaba: SIZE_T KernelTotal; 4e2933c620 2015-04-21 kinaba: SIZE_T KernelPaged; 4e2933c620 2015-04-21 kinaba: SIZE_T KernelNonpaged; 4e2933c620 2015-04-21 kinaba: SIZE_T PageSize; 4e2933c620 2015-04-21 kinaba: DWORD HandleCount; 4e2933c620 2015-04-21 kinaba: DWORD ProcessCount; 4e2933c620 2015-04-21 kinaba: DWORD ThreadCount; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias PERFORMANCE_INFORMATION* PPERFORMANCE_INFORMATION; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct ENUM_PAGE_FILE_INFORMATION { 4e2933c620 2015-04-21 kinaba: DWORD cb; 4e2933c620 2015-04-21 kinaba: DWORD Reserved; 4e2933c620 2015-04-21 kinaba: SIZE_T TotalSize; 4e2933c620 2015-04-21 kinaba: SIZE_T TotalInUse; 4e2933c620 2015-04-21 kinaba: SIZE_T PeakUsage; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias ENUM_PAGE_FILE_INFORMATION* PENUM_PAGE_FILE_INFORMATION; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: /* application-defined callback function used with the EnumPageFiles() 4e2933c620 2015-04-21 kinaba: * http://windowssdk.msdn.microsoft.com/library/ms682627.aspx */ 4e2933c620 2015-04-21 kinaba: version (Unicode) { 4e2933c620 2015-04-21 kinaba: alias BOOL function(LPVOID, PENUM_PAGE_FILE_INFORMATION, LPCWSTR) 4e2933c620 2015-04-21 kinaba: PENUM_PAGE_FILE_CALLBACK; 4e2933c620 2015-04-21 kinaba: } else { 4e2933c620 2015-04-21 kinaba: alias BOOL function(LPVOID, PENUM_PAGE_FILE_INFORMATION, LPCSTR) 4e2933c620 2015-04-21 kinaba: PENUM_PAGE_FILE_CALLBACK; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: // Grouped by application, not in alphabetical order. 4e2933c620 2015-04-21 kinaba: extern (Windows) { 4e2933c620 2015-04-21 kinaba: /* Process Information 4e2933c620 2015-04-21 kinaba: * http://windowssdk.msdn.microsoft.com/library/ms684870.aspx */ 4e2933c620 2015-04-21 kinaba: BOOL EnumProcesses(DWORD*, DWORD, DWORD*); /* NT/2000/XP/Server2003/Vista/Longhorn */ 4e2933c620 2015-04-21 kinaba: DWORD GetProcessImageFileNameA(HANDLE, LPSTR, DWORD); /* XP/Server2003/Vista/Longhorn */ 4e2933c620 2015-04-21 kinaba: DWORD GetProcessImageFileNameW(HANDLE, LPWSTR, DWORD); /* XP/Server2003/Vista/Longhorn */ 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: /* Module Information 4e2933c620 2015-04-21 kinaba: * http://windowssdk.msdn.microsoft.com/library/ms684232.aspx */ 4e2933c620 2015-04-21 kinaba: BOOL EnumProcessModules(HANDLE, HMODULE*, DWORD, LPDWORD); 4e2933c620 2015-04-21 kinaba: BOOL EnumProcessModulesEx(HANDLE, HMODULE*, DWORD, LPDWORD, DWORD); /* Vista/Longhorn */ 4e2933c620 2015-04-21 kinaba: DWORD GetModuleBaseNameA(HANDLE, HMODULE, LPSTR, DWORD); 4e2933c620 2015-04-21 kinaba: DWORD GetModuleBaseNameW(HANDLE, HMODULE, LPWSTR, DWORD); 4e2933c620 2015-04-21 kinaba: DWORD GetModuleFileNameExA(HANDLE, HMODULE, LPSTR, DWORD); 4e2933c620 2015-04-21 kinaba: DWORD GetModuleFileNameExW(HANDLE, HMODULE, LPWSTR, DWORD); 4e2933c620 2015-04-21 kinaba: BOOL GetModuleInformation(HANDLE, HMODULE, LPMODULEINFO, DWORD); 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: /* Device Driver Information 4e2933c620 2015-04-21 kinaba: * http://windowssdk.msdn.microsoft.com/library/ms682578.aspx */ 4e2933c620 2015-04-21 kinaba: BOOL EnumDeviceDrivers(LPVOID*, DWORD, LPDWORD); 4e2933c620 2015-04-21 kinaba: DWORD GetDeviceDriverBaseNameA(LPVOID, LPSTR, DWORD); 4e2933c620 2015-04-21 kinaba: DWORD GetDeviceDriverBaseNameW(LPVOID, LPWSTR, DWORD); 4e2933c620 2015-04-21 kinaba: DWORD GetDeviceDriverFileNameA(LPVOID, LPSTR, DWORD); 4e2933c620 2015-04-21 kinaba: DWORD GetDeviceDriverFileNameW(LPVOID, LPWSTR, DWORD); 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: /* Process Memory Usage Information 4e2933c620 2015-04-21 kinaba: * http://windowssdk.msdn.microsoft.com/library/ms684879.aspx */ 4e2933c620 2015-04-21 kinaba: BOOL GetProcessMemoryInfo(HANDLE, PPROCESS_MEMORY_COUNTERS, DWORD); 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: /* Working Set Information 4e2933c620 2015-04-21 kinaba: * http://windowssdk.msdn.microsoft.com/library/ms687398.aspx */ 4e2933c620 2015-04-21 kinaba: BOOL EmptyWorkingSet(HANDLE); 4e2933c620 2015-04-21 kinaba: BOOL GetWsChanges(HANDLE, PPSAPI_WS_WATCH_INFORMATION, DWORD); 4e2933c620 2015-04-21 kinaba: BOOL GetWsChangesEx(HANDLE, PPSAPI_WS_WATCH_INFORMATION_EX, DWORD); /* Vista/Longhorn */ 4e2933c620 2015-04-21 kinaba: BOOL InitializeProcessForWsWatch(HANDLE); 4e2933c620 2015-04-21 kinaba: BOOL QueryWorkingSet(HANDLE, PVOID, DWORD); 4e2933c620 2015-04-21 kinaba: BOOL QueryWorkingSetEx(HANDLE, PVOID, DWORD); 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: /* Memory-Mapped File Information 4e2933c620 2015-04-21 kinaba: * http://windowssdk.msdn.microsoft.com/library/ms684212.aspx */ 4e2933c620 2015-04-21 kinaba: DWORD GetMappedFileNameW(HANDLE, LPVOID, LPWSTR, DWORD); 4e2933c620 2015-04-21 kinaba: DWORD GetMappedFileNameA(HANDLE, LPVOID, LPSTR, DWORD); 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: /* Resources Information */ 4e2933c620 2015-04-21 kinaba: BOOL GetPerformanceInfo(PPERFORMANCE_INFORMATION, DWORD); /* XP/Server2003/Vista/Longhorn */ 4e2933c620 2015-04-21 kinaba: BOOL EnumPageFilesW(PENUM_PAGE_FILE_CALLBACK, LPVOID); /* 2000/XP/Server2003/Vista/Longhorn */ 4e2933c620 2015-04-21 kinaba: BOOL EnumPageFilesA(PENUM_PAGE_FILE_CALLBACK, LPVOID); /* 2000/XP/Server2003/Vista/Longhorn */ 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: version (Unicode) { 4e2933c620 2015-04-21 kinaba: alias GetModuleBaseNameW GetModuleBaseName; 4e2933c620 2015-04-21 kinaba: alias GetModuleFileNameExW GetModuleFileNameEx; 4e2933c620 2015-04-21 kinaba: alias GetMappedFileNameW GetMappedFileName; 4e2933c620 2015-04-21 kinaba: alias GetDeviceDriverBaseNameW GetDeviceDriverBaseName; 4e2933c620 2015-04-21 kinaba: alias GetDeviceDriverFileNameW GetDeviceDriverFileName; 4e2933c620 2015-04-21 kinaba: alias EnumPageFilesW EnumPageFiles; 4e2933c620 2015-04-21 kinaba: alias GetProcessImageFileNameW GetProcessImageFileName; 4e2933c620 2015-04-21 kinaba: } else { 4e2933c620 2015-04-21 kinaba: alias GetModuleBaseNameA GetModuleBaseName; 4e2933c620 2015-04-21 kinaba: alias GetModuleFileNameExA GetModuleFileNameEx; 4e2933c620 2015-04-21 kinaba: alias GetMappedFileNameA GetMappedFileName; 4e2933c620 2015-04-21 kinaba: alias GetDeviceDriverBaseNameA GetDeviceDriverBaseName; 4e2933c620 2015-04-21 kinaba: alias GetDeviceDriverFileNameA GetDeviceDriverFileName; 4e2933c620 2015-04-21 kinaba: alias EnumPageFilesA EnumPageFiles; 4e2933c620 2015-04-21 kinaba: alias GetProcessImageFileNameA GetProcessImageFileName; 4e2933c620 2015-04-21 kinaba: }