winbase.h


VirtualQuery

La función VirtualQuery proporciona información sobre un rango de páginas del espacio de direcciones virtual del proceso que la invoque.

Sintaxis

DWORD VirtualQuery(
    LPCVOID lpAddress,                   // dirección de la región
    PMEMORY_BASIC_INFORMATION lpBuffer,  // dirección del buffer de información
    DWORD dwLength                       // tamaño del buffer
   );

Parámetros

lpAddress: apunta a la dirección base de la región de páginas a consultar. Este valor es redondeado al siguiente límite de página. Para determinar el tamaño de una página en el ordenador, usar la función GetSystemInfo.

lpBuffer: apunta a una estructura MEMORY_BASIC_INFORMATION en la que se devuelve la información sobre el rango de páginas especificado.

dwLength: especifica el tamaño, en bytes, del buffer apuntado por el parámetro lpBuffer.

Valor de retorno

El valor de retorno es el número actual de bytes devueltos en el buffer de información.

Observaciones

VirtualQuery proporciona información sobre una región de páginas consecutivas que empiezan en la dirección especificada que compartan los siguientes atributos:

  • El estado de todas las páginas es el mismo con la bandera MEM_COMMIT, MEM_RESERVE, MEM_FREE, MEM_PRIVATE, MEM_MAPPED o MEM_IMAGE.
  • Si la página inicial no está libre, todas las páginas de la región forman parte del mismo acomodo de páginas reservadas por una llamada a la función VirtualAlloc.
  • El acceso de todas las páginas es el mismo con la bandera 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 después recorre las páginas siguientes del rango completo o hasta que encuentre una página con un conjunto de atributos no coincidente. La función devuelve los atributos y el tamaño, en bytes, de la región de páginas con atributos coincidentes. Por ejemplo, si hay una región de 40 megabytes (MB) de memporia libre, y VirtualQuery es invocada para una página que está a 10 MB del inicio de la región, la función obtiene el estado de MEM_FREE y un tamaño de 30 MB.

Esta función informa sobre una región de páginas en la memoria del proceso que la invoque, y la función VirtualQueryEx lo hace sobre una región de páginas de la memoria de un proceso especificado.