Función VirtualQuery (memoryapi.h)
Recupera información sobre un intervalo de páginas en el espacio de direcciones virtuales del proceso de llamada.
Para recuperar información sobre un intervalo de páginas en el espacio de direcciones de otro proceso, use la función VirtualQueryEx .
Sintaxis
SIZE_T VirtualQuery(
[in, optional] LPCVOID lpAddress,
[out] PMEMORY_BASIC_INFORMATION lpBuffer,
[in] SIZE_T dwLength
);
Parámetros
[in, optional] lpAddress
Puntero a la dirección base de la región de las páginas que se van a consultar. Este valor se redondea hacia abajo hasta el límite de la página siguiente. Para determinar el tamaño de una página en el equipo host, use la función GetSystemInfo .
Si lpAddress especifica una dirección por encima de la dirección de memoria más alta accesible para el proceso, se produce un error en la función con ERROR_INVALID_PARAMETER.
[out] lpBuffer
Puntero a una estructura MEMORY_BASIC_INFORMATION en la que se devuelve información sobre el intervalo de página especificado.
[in] dwLength
Tamaño del búfer al que apunta el parámetro lpBuffer , en bytes.
Valor devuelto
El valor devuelto es el número real de bytes devueltos en el búfer de información.
Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError. Entre los posibles valores de error se incluyen ERROR_INVALID_PARAMETER.
Comentarios
VirtualQuery proporciona información sobre una región de páginas consecutivas que comienzan en una dirección especificada que comparte los atributos siguientes:
- El estado de todas las páginas es el mismo (MEM_COMMIT, MEM_RESERVE, MEM_FREE, MEM_PRIVATE, MEM_MAPPED o MEM_IMAGE).
- Si la página inicial no es gratuita, todas las páginas de la región forman parte de la misma asignación inicial de páginas creadas por una sola llamada a VirtualAlloc, MapViewOfFile o una de las siguientes versiones extendidas de estas funciones: VirtualAllocEx, VirtualAllocEx, MapViewOfFileEx, MapViewOfFileExuma.
- El acceso concedido a todas las páginas es el mismo (PAGE_READONLY, PAGE_READWRITE, PAGE_NOACCESS, PAGE_WRITECOPY, PAGE_EXECUTE, PAGE_EXECUTE_READ, PAGE_EXECUTE_READWRITE, PAGE_EXECUTE_WRITECOPY, PAGE_GUARD o PAGE_NOCACHE).
La función determina los atributos de la primera página de la región y, a continuación, examina las páginas posteriores hasta que examina todo el intervalo de páginas o hasta que encuentra una página con un conjunto de atributos no coincidente. La función devuelve los atributos y el tamaño de la región de las páginas con atributos coincidentes, en bytes. Por ejemplo, si hay una región de 40 megabytes (MB) de memoria libre y se llama a VirtualQuery en una página de 10 MB en la región, la función obtendrá un estado de MEM_FREE y un tamaño de 30 MB.
Si se modifica una página de copia en escritura compartida, se convierte en privada para el proceso que modificó la página. Sin embargo, la función VirtualQuery seguirá notificando páginas como MEM_MAPPED (para vistas de datos) o MEM_IMAGE (para vistas de imagen ejecutables) en lugar de MEM_PRIVATE. Para detectar si se ha producido una copia en escritura para una página específica, acceda a la página o bloquee la página mediante la función VirtualLock para asegurarse de que la página está residente en memoria y, a continuación, use la función QueryWorkingSetEx para comprobar el bit Compartido en la información del conjunto de trabajo extendido de la página. Si el bit Compartido está claro, la página es privada.
Esta función informa sobre una región de páginas en la memoria del proceso de llamada y la función VirtualQueryEx informa sobre una región de páginas en la memoria de un proceso especificado.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows XP [aplicaciones de escritorio | aplicaciones para UWP] |
Servidor mínimo compatible | Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP] |
Plataforma de destino | Windows |
Encabezado | memoryapi.h (incluya Windows.h, Memoryapi.h) |
Library | onecore.lib |
Archivo DLL | Kernel32.dll |