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