GetProcessMemoryInfo错误

时间:2017-06-03 02:54:43

标签: c++ winapi

我正在编写用于在C ++中使用psapi.h查找当前进程的虚拟内存的代码我的代码如下

#include "windows.h" 
#include "psapi.h" 

PROCESS_MEMORY_COUNTERS_EX pmc; 
GetProcessMemoryInfo(GetCurrentProcess(), &pmc, sizeof(pmc));
SIZE_T virtualMemUsedByMe = pmc.PrivateUsage;

现在这是我的问题,当我在vs2012最终编写此代码并编译时,编译器告诉我

  

无法从PROCESS_MEMORY_COUNTERS_EX *转换为PPROCESS_MEMORY_COUNTER

我不知道该怎么做。请帮忙。谢谢你提前帮忙。

1 个答案:

答案 0 :(得分:3)

您需要转换参数。当结构参数指针被扩展时,这在Windows API中并不罕见。

您还需要检查返回值和返回的结构大小:

PROCESS_MEMORY_COUNTERS_EX pmc; 
if (GetProcessMemoryInfo(GetCurrentProcess(), (PROCESS_MEMORY_COUNTERS*) &pmc, sizeof(pmc)) && pmc.cb >= sizeof(pmc))
{
  SIZE_T virtualMemUsedByMe = pmc.PrivateUsage;
  // use virtualMemUsedByMe here
}