NtAllocateVirtualMemory

NtAllocateVirtualMemory

NtAllocateVirtualMemory是一種計算機函式,功能是能在指定進程的虛擬空間中申請一塊記憶體,該塊記憶體將以64kb大小對齊。

函式原型,參數說明,ProcessHandle,BaseAddress,ZeroBits,RegionSize,AllocationType,Protect,返回值,備註,

函式原型

NTSYSAPI NTSTATUS NTAPI NtAllocateVirtualMemory(
IN HANDLE ProcessHandle,
IN OUT PVOID *BaseAddress,
IN ULONG ZeroBits,
IN OUT PULONG RegionSize,
IN ULONG AllocationType,
IN ULONG Protect
);

參數說明

ProcessHandle

目標進程句柄。
該句柄應具有PROCESS_VM_OPERATION訪問許可權。

BaseAddress

期望記憶體基址指針
當該值非零時,系統將計算此值的頁對齊地址,嘗試按照此地址申請記憶體塊。
當該值等於零時,系統將尋找第一個未使用記憶體塊。
函式調用成功時,此參數亦將接收實際基址。

ZeroBits

基址高位零位數量。
當該值為零時,此參數將被忽略。
當該值大於零小於32時,將被認為是基址的高位零位數量,此時,32-63位默認為零,以兼容64位作業系統。
當該值大於32時,將被認為是掩蓋位MASK,系統將計算此值高位零位數量,以充當參數。

RegionSize

期望大小。
系統將計算實際基址與該值的頁對齊邊界,以獲得實際分配大小。
當函式調用成功時,此參數亦將接收實際分配大小。

AllocationType

分配類型類型說明
MEM_COMMIT
為特定的頁面區域分配記憶體中或磁碟的頁面檔案中的物理存儲
MEM_PHYSICAL
分配物理記憶體(僅用於地址視窗擴展記憶體)
MEM_RESERVE
保留進程的虛擬地址空間,而不分配任何物理存儲。
MEM_RESET
指明在記憶體中由參數BaseAddress和RegionSize指定的數據無效
MEM_TOP_DOWN
在儘可能高的地址上分配記憶體(Windows 98忽略此標誌)
MEM_WRITE_WATCH
必須與MEM_RESERVE一起指定,使系統跟蹤那些被寫入分配區域的頁面(僅針對Windows 98)

Protect

保護屬性描述
PAGE_NOACCESS
試圖讀取頁面、寫入頁面或執行頁面中的代碼將引發訪問違規
PAGE_READONLY
試圖寫入頁面或執行頁面中的代碼將引發訪問違規
PAGE_READWRITE
試圖執行頁面中的代碼將引發訪問違規
PAGE_EXECUTE
試圖讀取頁面或寫入頁面將引發訪問違規
PAGE_EXECUTE_READ
試圖寫入頁面將引發訪問違規
PAGE_EXECUTE_READWRITE
對頁面執行任何操作都不會引發訪問違規
PAGE_WRITECOPY
試圖執行頁面中的代碼將引發訪問違規。試圖寫入頁面將使系統為進程單獨創建一份該頁面的私有副本(以頁交換檔案為後備存儲器)
PAGE_EXECUTE_WRITECOPY
對頁面執行任何操作都不會引發訪問違規。試圖寫入頁面將使系統為進程單獨創建一份該頁面的私有副本(以頁交換檔案為後備存儲器)

返回值

各種NTSTATUS碼。

備註

詳見wrk\base\ntos\mm\allocvm.c

相關詞條

熱門詞條

聯絡我們