GetProcessMemoryInfo()
(2013-10-22 12:05:58)
标签:
getprocessmemoryinfoit |
分类: windows核心编程 |
我们把一个进程中的地址空间中被保存在内存里的那些页面称为它的工作集,对一个给定进程来说,下面的函数可以取得当前工作集的大小和最大工作集的大小,该函数在psapi.h中定义:
BOOL WINAPI
HANDLE
PPROCESS_MEMORY_COUNTERS
DWORD
)
hProcess:我们感兴趣的进程的句柄
ppmc:一个指向PROCESS_MEMORY_COUNTERS结构的指针(关于该结构的认识请看下面)
cbSize:指定PROCESS_MEMORY_COUNTERS的大小
PROCESS_MEMORYCOUNTERS结构成员如下:
typedef struct _PROCESS_MEMORY_COUNTERS {
} PROCESS_MEMORY_COUNTERS, *PPROCESS_MEMORY_COUNTERS;
参数介绍:(下面描述的都是当前进程)
PeakWorkingSetSize;工作集的最大值(即该进程运行以来曾用过的最大内存数量)
WorkingSetSize:该进程当前工作集(即当前进程正在使用的字节数)
QuotaPeakPagedPoolUsage:使用分页池的最高峰
QuotaPagedPoolUsage:当前使用的分页池的数量
QuotaPeakNonPagedPoolUsa
QuotaNonPagedPoolUsage:当前使用非分页池的数量
PagefileUsage:内存管理器已经提交给windows该进程内存的使用值
PeakPagefileUsage:该进程运行以来 提交占用 的最大值
在这里含有一个结构PROCESS_MEMORY_COUNTERS_EX它多了一个字段PrivateUsage这个字段可以让我们知道我们显示分配内存的数量(即调用 new melloc 或VirtualAloc函数申请的内存)
//获得进程内存的相关信息
#include "stdafx.h"
#include "windows.h"
#include "psapi.h"
int _tmain(int argc, _TCHAR* argv[])
{
}