複製鏈接
請複製以下鏈接發送給好友

VirtualAllocEx

鎖定
VirtualAllocEx 函數的作用是在指定進程的虛擬空間保留或提交內存區域,除非指定MEM_RESET參數,否則將該內存區域置0。
外文名
VirtualAllocEx
所屬學科
計算機
函數原形
LPVOID VirtualAllocEx(
HANDLE hProcess,
LPVOID lpAddress,
SIZE_T dwSize,
DWORD flAllocationType,
DWORD flProtect
);
hProcess
申請內存所在的進程句柄。
lpAddress
保留頁面的內存地址;一般用NULL自動分配 。
dwSize
欲分配的內存大小,字節單位;注意實際分 配的內存大小是頁內存大小的整數倍
flAllocationType
可取下列值:
MEM_COMMIT:為特定的頁面區域分配內存中或磁盤的頁面文件中的物理存儲
MEM_PHYSICAL :分配物理內存(僅用於地址窗口擴展內存
MEM_RESERVE:保留進程的虛擬地址空間,而不分配任何物理存儲。保留頁面可通過繼續調用VirtualAlloc()而被佔用
MEM_RESET :指明在內存中由參數lpAddress和dwSize指定的數據無效
MEM_TOP_DOWN:在儘可能高的地址上分配內存(Windows 98忽略此標誌)
MEM_WRITE_WATCH:必須與MEM_RESERVE一起指定,使系統跟蹤那些被寫入分配區域的頁面(僅針對Windows 98)
flProtect
可取下列值:
PAGE_READONLY: 該區域為只讀。如果應用程序試圖訪問區域中的頁的時候,將會被拒絕訪
PAGE_READWRITE 區域可被應用程序讀寫
PAGE_EXECUTE: 區域包含可被系統執行的代碼。試圖讀寫該區域的操作將被拒絕。
PAGE_EXECUTE_READ :區域包含可執行代碼,應用程序可以讀該區域。
PAGE_EXECUTE_READWRITE: 區域包含可執行代碼,應用程序可以讀寫該區域。
PAGE_GUARD: 區域第一次被訪問時進入一個STATUS_GUARD_PAGE異常,這個標誌要和其他保護標誌合併使用,表明區域被第一次訪問的權限
PAGE_NOACCESS: 任何訪問該區域的操作將被拒絕
PAGE_NOCACHE: RAM中的頁映射到該區域時將不會被微處理器緩存(cached)
注:PAGE_GUARD和PAGE_NOCHACHE標誌可以和其他標誌合併使用以進一步指定頁的特徵。PAGE_GUARD標誌指定了一個防護頁(guard page),即當一個頁被提交時會因第一次被訪問而產生一個one-shot異常,接着取得指定的訪問權限。PAGE_NOCACHE防止當它映射到虛擬頁的時候被微處理器緩存。這個標誌方便設備驅動使用直接內存訪問方式(DMA)來共享內存塊。
返回值:
執行成功就返回分配內存的首地址,不成功就是NULL。