VirtualQueryEx功能提供有关指定进程的虚拟地址空间内的一系列页面的信息。
DWORD VirtualQueryEx(
HANDLE 【hProcess】, | //处理进程 |
LPCVOID 【lpAddress】, | //地址的地区 |
PMEMORY_BASIC_INFORMATION 【lpBuffer】, | //信息缓冲区的地址 |
DWORD 【dwLength】 | //缓冲区大小 |
); |
参数
【hProcess】
标识查询其内存信息的进程。句柄必须具有PROCESS_QUERY_INFORMATION权限。
【lpAddress】
指向要查询的页面的基地址。该值向下舍入到下一页边界。要确定主机上的页面大小,请使用GetSystemInfo功能。
【lpBuffer】
指向MEMORY_BASIC_INFORMATION结构,其中返回有关指定页面范围的信息。
【dwLength】
指定由【lpBuffer】参数指向的缓冲区的大小(以字节为单位)。
返回值
返回值是信息缓冲区中返回的实际字节数。
备注
VirtualQueryEx提供有关共享以下属性的指定地址开始的连续页面区域的信息:
*所有页面标志的状态,使用同样的,Mem_kmit,Mem_rizrw,Mem_fri,Mem_praivet,Mem_mapd和Mem_imej。hi-Latn
*如果初始页面不是空闲的,该区域中的所有页面都是通过调用VirtualAlloc函数保留的页面的初始分配的一部分。
*所有页面的访问权与PAGE_READONLY,PAGE_READWRITE,PAGE_NOACCESS,PAGE_WRITECOPY,PAGE_EXECUTE,PAGE_EXECUTE_READ,PAGE_EXECUTE_READWRITE,PAGE_EXECUTE_WRITECOPY,PAGE_GUARD或PAGE_NOCACHE标志相同。
VirtualQueryEx函数确定区域中第一个页面的属性,然后扫描后续页面,直到它扫描整个页面范围,或者直到遇到具有不匹配属性集合的页面。该函数返回具有匹配属性的页面的属性和大小(以字节为单位)。例如,如果存在40 MB的可用内存区域,并且在该区域中10 MB的页面上调用VirtualQueryEx,则该函数将获取MEM_FREE的状态,大小为30 MB。
此函数与VirtualQuery功能相同,只是它能够访问指定进程中的内存信息。
也可以看看
GetSystemInfo, MEMORY_BASIC_INFORMATION, VirtualAlloc, VirtualProtectEx, VirtualQuery