请输入您要查询的百科知识:

 

词条 VirtualAllocEx
释义

VirtualAllocEx 函数的作用是在指定进程的虚拟空间保留或提交内存区域,除非指定MEM_RESET参数,否则将该内存区域置0。

函数原形:

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。

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/3/20 23:47:39