获取进程内存信息

时间:2013-02-25 23:12:43

标签: c++ winapi

我一直在尝试在Windows中获取进程内存信息,我一直在关注Microsoft文档,我已经有了这个代码但是它 似乎不起作用。它应该打印成功,但它根本不打印任何东西。我的调试告诉我,因为hProcess = null, 但我不明白为什么。这是我目前的代码

#include <windows.h>
#include <stdio.h>
#include <psapi.h>
#include<iostream>

using namespace std;

int main()
{
    DWORD aProcesses[1024], cbNeeded, cProcesses;

    if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) )
    {
        return 1;
    }

    cProcesses = cbNeeded / sizeof(DWORD);

    for (int i = 0; i < cProcesses; i++ )
    {
    int processID = aProcesses[i];
    HANDLE hProcess;
    PROCESS_MEMORY_COUNTERS pmc;
    hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processID );

    if (NULL == hProcess)
        return 2;

    if ( GetProcessMemoryInfo( hProcess, &pmc, sizeof(pmc)) )
    {
        cout<<"SUCCEEDED";
    }

    CloseHandle( hProcess );
    }

    return 0;
}

1 个答案:

答案 0 :(得分:1)

您可能无权读取某些(特权系统)进程的内存。如果从GetLastError返回NULL句柄,请检查OpenProcess

通常,检查和处理Win32错误条件是一种很好的做法,即使API“通常”适合您。