我正在编写用于在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
我不知道该怎么做。请帮忙。谢谢你提前帮忙。
答案 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
}