vmquery.h:
#pragma once
#include #include using std::vector;
typedef struct _vmqueryex
vmqueryex;
typedef struct _vmquery
vmquery, *pvmquery;
class cvmquery
;
vmquery.cpp:
#include "stdafx.h"
#include "vmquery.h"
#include cvmquery::cvmquery()
cvmquery::~cvmquery()
void cvmquery::getprotecttext(dword dwprotect, ptstr szbuf, int nsize, bool bshowflags)
stringcchcopy(szbuf, nsize, p);
if (bshowflags)
}void cvmquery::getmemstoragetext(dword dwstorage, ptstr szbuf, int nsize)
stringcchcopy(szbuf, nsize, p);
}// 將區域內的塊資訊儲存到vmquery_help中
bool cvmquery::getvmblockinfo(handle hprocess, lpcvoid lpaddress, vmqueryex *pvmblock)
// 設定棧標誌位
// 注1:具有page_guard保護屬性的塊的數量大於0,則此區域是為執行緒棧而預定的
pvmblock->brgnisastack = (pvmblock->dwrgnguardblks > 0);
return(true);
}bool cvmquery::getvminfo(handle hprocess, lpcvoid lpaddress, pvmquery pvmq)
// 4. 解析為文字資訊
getprotecttext(pvmq->dwrgnprotection, pvmq->szrgnprotection, _countof(pvmq->szrgnprotection), true);
getmemstoragetext(pvmq->dwrgnstorage, pvmq->szrgnstorage, _countof(pvmq->szrgnstorage));
stringcchprintf(pvmq->szrgnbaseaddress,_countof(pvmq->szrgnbaseaddress), l"0x%08x", pvmq->lprgnbaseaddress );
stringcchprintf(pvmq->szrgnsize, _countof(pvmq->szrgnsize), l"%10d", pvmq->nrgnsize );
stringcchprintf(pvmq->szrgnblocks, _countof(pvmq->szrgnblocks), l"%3d", pvmq->dwrgnblocks );
return true;
}
vmview.cpp:
// vmview.cpp : 定義控制台應用程式的入口點。
//#include "stdafx.h"
#include "vmquery.h"
bool showvm(dword dwprocessid)
; while ( objvm.getvminfo(hprocess, lpaddress, &stcvmq) )
closehandle(hprocess);
return true;
}int _tmain(int argc, _tchar* argv)
這段**沒獲取塊內資訊 只獲取了塊的大小和數量(需要自己拓展獲取塊資訊)
虛擬記憶體應用
虛擬記憶體的重要性體現在下面幾個方面 1 虛擬記憶體可以對映到硬碟,以達到擴充套件記憶體的作用,這樣系統在物理記憶體已經用滿的情況下,就不會因為沒有記憶體可用,而導致系統崩潰。2 虛擬記憶體是以程序空間為定址空間的,一般情況,程序使用者模式下的定址空間 是2g,為了避免記憶體的碎片,可以把2g程序空...
虛擬記憶體(Virtual Memory)
虛擬記憶體 virtual memory 是windows管理所有可用記憶體的方式。對於32位windows系 統,每個程序所用到的虛擬記憶體位址從0到2 32 1,總容量4gb,其中2gb是與作業系統以 及其他所有程序所共享,另外2gb分派給程序獨佔 這就是常說的32位windows中乙個進 程最...
虛擬記憶體使用
虛擬記憶體使用一 簡介windows 提供了3 中進行記憶體管理的方法,包括 虛擬記憶體 一般用來管理大型資料結構,受到硬碟調頁檔案的支援 記憶體對映檔案 常用來管理大型資料流和多程序共享。記憶體堆 最適合用來管理大量的小物件。二 虛擬記憶體的使用 1 我們可以在程序的位址空間中保留乙個區域 pvo...