C++进程相关知识总结
_getpid()
头文件:process.h
获取当前进程ID;
OpenProcess()
打开一个已存在的进程对象吗,返回进程句柄;
HANDLE OpenProcess(
DWORD dwDesiredAccess, //渴望得到的访问权限(标志)
BOOL bInheritHandle, // 是否继承句柄
DWORD dwProcessId// 进程标示符
);
参数说明:
dwDesiredAccess
获取的权限,可分为以下几种:
PROCESS_ALL_ACCESS:获取所有权限
PROCESS_CREATE_PROCESS:创建进程
PROCESS_CREATE_THREAD:创建线程
PROCESS_DUP_HANDLE:使用DuplicateHandle()函数复制一个新句柄
PROCESS_QUERY_INFORMATION:获取进程的令牌、退出码和优先级等信息
PROCESS_QUERY_LIMITED_INFORMATION:获取进程特定的某个信息
PROCESS_SET_INFORMATION:设置进程的某种信息
PROCESS_SET_QUOTA:使用SetProcessWorkingSetSize函数设置内存限制
PROCESS_SUSPEND_RESUME:暂停或者恢复一个进程
PROCESS_TERMINATE:使用Terminate函数终止进程
PROCESS_VM_OPERATION:在进程的地址空间执行操作
PROCESS_VM_READ:使用ReadProcessMemory函数在进程中读取内存
PROCESS_VM_WRITE:使用WriteProcessMemory函数在进程中写入内存
SYNCHRONIZE:使用wait函数等待进程终止
bInheritHandle
TRUE或者FALSE,是否继承句柄;
dwProcessId
pid,进程ID;
返回值:
如成功,返回值为指定进程的句柄。
如失败,返回值为空,可调用GetLastError获得错误代码。
GetProcessMemoryInf()
头文件:Psapi.h
GetProcessMemoryInfo(
HANDLE Process,
PROCESS_MEMORY_COUNTERS* psmemCounters,
DWORD cb
);
参数说明:
Process
是欲获取内存使用情况的进程句柄。
psmemCounters
是返回内存使用情况的结构体。
cb
是psmemCounters结构体的大小。
PS:
PPROCESS_MEMORY_COUNTERS
PageFaultCount
Number of page faults. // 缺页中断次数
PeakWorkingSetSize
Peak working set size, in bytes. // 使用内存高峰
WorkingSetSize
Current working set size, in bytes. // 当前使用的内存
QuotaPeakPagedPoolUsage
Peak paged pool usage, in bytes. // 使用页面缓存池高峰
QuotaPagedPoolUsage
Current paged pool usage, in bytes.// 使用页面缓存池
QuotaPeakNonPagedPoolUsage
Peak nonpaged pool usage, in bytes.// 使用非分页缓存池高峰
QuotaNonPagedPoolUsage
Current nonpaged pool usage, in bytes.// 使用非分页缓存池
PagefileUsage
Current space allocated for the pagefile, in bytes.Those pages may or may not be in memory.// 使用分页文件
PeakPagefileUsage
Peak space allocated for the pagefile, in bytes.// 使用分页文件高峰

浙公网安备 33010602011771号