NtAllocateVirtualMemory

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

函式功能

該函式在指定進程的虛擬空間中申請一塊記憶體,該塊記憶體將以64kb大小對齊。

函式原型

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訪問許可權。

BaseAddre

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

ZeroBit

基址高位零位數量。
當該值為零時,此參數將被忽略。
當該值大於零小於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

相關詞條

相關搜尋

熱門詞條

聯絡我們