VirtualQueryEx
The VirtualQueryEx
function provides information about a range of pages within the virtual address
space of a specified process.
DWORD VirtualQueryEx(
HANDLE hProcess, |
// handle of
process |
LPCVOID lpAddress, |
// address of
region |
PMEMORY_BASIC_INFORMATION lpBuffer, |
// address of
information buffer |
DWORD dwLength |
// size of buffer |
); |
|
Parameters
hProcess
Identifies
the process whose memory information is queried. The handle must have
PROCESS_QUERY_INFORMATION access.
lpAddress
Points to the
base address of the region of pages to be queried. This value is rounded down
to the next page boundary. To determine the size of a page on the host
computer, use the GetSystemInfo
lpBuffer
Points to a MEMORY_BASIC_INFORMATION
dwLength
Specifies the
size, in bytes, of the buffer pointed to by the lpBuffer parameter.
Return Values
The return
value is the actual number of bytes returned in the information buffer.
Remarks
VirtualQueryEx provides information about a region of consecutive
pages beginning at a specified address that share the following attributes:
The state of all pages is the
same with the MEM_COMMIT, MEM_RESERVE, MEM_FREE, MEM_PRIVATE, MEM_MAPPED, or
MEM_IMAGE flag.
If the initial page is not
free, all pages in the region are part of the same initial allocation of pages
reserved by a call to the VirtualAlloc function.
The access of all pages is the
same with the PAGE_READONLY, PAGE_READWRITE, PAGE_NOACCESS, PAGE_WRITECOPY,
PAGE_EXECUTE, PAGE_EXECUTE_READ, PAGE_EXECUTE_READWRITE,
PAGE_EXECUTE_WRITECOPY, PAGE_GUARD, or PAGE_NOCACHE flag.
The VirtualQueryEx
function determines the attributes of the first page in the region and then
scans subsequent pages until it scans the entire range of pages, or until it
encounters a page with a nonmatching set of attributes. The function returns
the attributes and the size, in bytes, of the region of pages with matching
attributes. For example, if there is a 40 megabyte (MB) region of free memory,
and VirtualQueryEx is called on a page that is 10 MB into the region,
the function will obtain a state of MEM_FREE and a size of 30 MB.
This function
is identical to the VirtualQuery function, except that it enables access
to information about memory in a specified process.
See Also