簡體   English   中英

獲取過程內存信息

[英]Get process memory information

我一直在嘗試在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;
}

您可能無權讀取某些(特權系統)進程的內存。 如果您從OpenProcess返回了NULL句柄,請檢查GetLastError

通常,即使API“通常”為您工作,檢查和處理Win32錯誤情況也是一個好習慣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM