首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

Windows API 枚舉進程與查詢內存區域信息

     編輯:關於C++

系統級信息獲取

  • GetSystemInfo:頁大小、用戶/內核地址邊界、CPU 數。
  • GlobalMemoryStatus:物理/虛擬/頁文件 總量與可用量、使用率。

進程內存遍歷

  1. CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS) 遍歷進程。
  2. OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ) 獲取句柄。
  3. VirtualQueryEx 從 lpMinimumApplicationAddress 遞增掃描至 lpMaximumApplicationAddress,步長 RegionSize。輸出 BaseAddress、AllocationProtect、Type。

核心循環

DWORD dwCurPos = (DWORD)si.lpMinimumApplicationAddress;
while (dwCurPos < (DWORD)si.lpMaximumApplicationAddress) {
    MEMORY_BASIC_INFORMATION mbi;
    VirtualQueryEx(hProcess, (LPVOID)dwCurPos, &mbi, sizeof(mbi));
    printf("0x%x %u %u\n", mbi.BaseAddress, mbi.AllocationProtect, mbi.Type);
    dwCurPos = (DWORD)mbi.BaseAddress + mbi.RegionSize;
}

可用於調試、內存分析、惡意代碼掃描等場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved