为什么“进程内存计数器”中的任何值都与任务管理器中显示的已用内存值不同?

时间:2018-06-27 11:39:46

标签: c++ windows winapi process psapi

进程内存计数器是psapi(进程状态API)中可用的已定义结构。其结构定义为

typedef 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;
} PROCESS_MEMORY_COUNTERS;

我使用具有语法的GetProcessMemoryInfo方法, BOOL GetProcessMemoryInfo(HANDLE Process, PROCESS_MEMORY_COUNTERS* pmc,DWORD size_pmc);

从结构变量指针pmc中,我可以将进程的WorkingSetSize(例如mspaint.exe)作为pmc.WorkingSetSize访问。

但是任务管理器中显示的内存值与structre中的任何值都不相同。我的问题是,

  1. 这些值是什么?
  2. 任务管理器中显示的值是什么?
  3. 获取任务管理器中显示的已使用内存的编程方式是什么?
  4. 可以使用过程内存计数器本身来计算吗?

PS:首选语言是C ++,我想这样做而不在命令提示符下运行任何命令。

0 个答案:

没有答案