windows的进程状态信息函数主要分为两类,一类是PS(PROCESS STATUS HELPER) API,另外一类是Th(TOOL HELP) API。
本文介绍PS API。
Ps API 函数列表及其功能说明:
使用Ps API需要包含psapi.h文件以及psapi.lib
EmptyWorkingSet 从执行的工作集中尽可能的多删除页(page),内存优化工具就使用了这个软件。
BOOL WINAPI EmptyWorkingSet(_In_ HANDLE hProcess);
EnumDeviceDrivers 枚举设备驱动
BOOL WINAPI EnumDeviceDrivers(_Out_ LPVOID *lpImageBase, _In_ WORD cb, _Out_ LPDWORD lpcbNeeded);
EnumPageFiles 枚举页文件
BOOL WINAPI EnumPageFiles(_Out_ PENUM_PAGE_CALLBACK pCallbackRoutine, _In_ LPVOID lpContext);
EnumProcesses 枚举进程
BOOL WINAPI EnumProcesses(_Out_ DWORD *pProcessIds, _In_ DWORD cb, _Out_ DWORD *pBytesReturned);
EnumProcessModules 枚举进程模块
BOOL WINAPI EnumProcessModules(_In_ HANDLE hProcess, _Out_ HMODULE *lphModule, _In_ DWORD cb, _Out_ LPDWORD lpcbNeeded);
EnumProcessModulesEx 枚举进程模块
BOOL WINAPI EnumProcessModulesEx(_In_ HANDLE hProcess, _Out_ HMODULE *lphModule, _In_ DWORD cb, _Out_ LPDWORD lpcbNeeded,_In_ DWORD dwFilterFlag);
GetDeviceDriverBaseName 获取驱动的base name(目前还不清楚base name是什么东西)
DWORD WINAPI GetDeviceDriverBaseName(_In_ LPVOID ImageBase, _Out_ LPTSTR lpBaseName, _In_ DWORD nSize);
GetDeviceDriverFileName 这个是用来获取驱动的文件名
DWORD WINAPI GetDeviceDriverFileName(_In_ LPVOID ImageBase, _Out_ LPTSTR lpFilename, _In_ DWORD nSize);
GetMappedFileName 这个很函数检测参数地址是不是在指定进程的地址空间的内存映射文件中,如果是,则返回内存映射文件名
DWORD WINAPI GetMappedFileName(_In_ HANDLE hProcess, _In_ LPVOID lpv, _Out_ LPTSTR lpFilename, _In_ DWORD nSize);
GetModuleBaseName 获取模块的基址名称
DWORD WINAPI GetModuleBaseName(_In_ HANDLE hProcess, _In_opt_ HMODULE hModule, _Out_ LPTSTR lpBaseName, _In_ DWORD nSize);
GetModuleFileNameEx 获取模块文件名
DWORD WINAPI GetModuleFileNameEx(_In_ HANDLE hProcess, _In_opt_ HMODULE hModule, _Out_ LPTSTR lpFilename, _In_ DWORD nSize);
GetModuleInformation 获取模块文件信息原型:
BOOL WINAPI GetModuleInformation(_In_ HANDLE hProcess, _In_ HMODULE hModule, _Out_ LPMODULEINFO lpmodinfo, _In_ DWORD cb);
GetPerformanceInfo 返回一个包含性能信息的PERFORMANCE_INFORMATION 结构体
BOOL WINAPI GetPerformanceInfo(_Out_ PPERFORMANCE_INFORMATION pPerformanceInformation, _In_ DWORD cb);
GetProcessimagefilename 获取指定进程的可执行文件名
DWORD WINAPI GetProcessImageFileName(_In_ HANDLE hProcess, _Out_ LPTSTR lpImageFileName, _In_ DWORD nSize);
GetProcessMemoryInfo 通过PROCESS_MEMORY_COUNTERS结构返回指定进程的内存使用信息
BOOL WINAPI GetProcessMemoryInfo(_In_ HANDLE Process, _Out_ PPROCESS_MEMORY_COUNTERS ppsmemCounters, _In_ DWORD cb);
GetWsChanges 返回自 InitializeProcessForWsWatch 函数被调用后添加到工作集(WS:working set)的页(pages)信息
BOOL WINAPI GetWsChanges(_In_ HANDLE hProcess, _Out_ PPSAPI_WS_WATCH_INFORMATION lpWatchInfo, _In_ DWORD cb);
GetWsChangesEx 返回自 InitializeProcessForWsWatch 函数被调用后添加到工作集(WS:working set)的页(pages)信息
BOOL WINAPI GetWsChanges(_In_ HANDLE hProcess, _Out_ PPSAPI_WS_WATCH_INFORMATION_EX lpWatchInfoEx, _In_ DWORD cb);
InitializeProcessForWsWatch 启动对指定进程的ws监控
BOOL WINAPI InitializeProcessForWsWatch(_In_ HANDLE hProcess);
QueryWorkingSet获取指定进程位于虚拟地址空间的页(pages)扩展信息
BOOL WINAPI QueryWorkingSet(_In_ HANDLE hProcess, _Out_ PVOID pv, _In_ DWORD cb);
QueryWorkingSetEx获取指定进程位于虚拟地址空间的页(pages)扩展信息
BOOL WINAPI QueryWorkingSet(_In_ HANDLE hProcess, _Inout_ PVOID pv, _In_ DWORD cb);