Compartir a través de


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

Vea también

Getsysteminfo

MEMORY_BASIC_INFORMATION

MapViewOfFile

Funciones de administración de memoria

Funciones de memoria virtual

VirtualQueryEx

API de Vertdll disponibles en enclaves de VBS