winbase.h


VirtualQueryEx

La función VirtualQueryEx proporciona información sobre un rango de páginas del espacio de direcciones virtual de un proceso especificado.

Sintaxis

DWORD VirtualQueryEx(
    HANDLE hProcess,                     // manipulador de proceso
    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

hProcess: identifica el proceso cuya información de memoria se consulta. El manipilador debe tener el acceso PROCESS_QUERY_INFORMATION.

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

VirtualQueryEx 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 VirtualQueryEx 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 es idéntica a VirtualQuery, excepto en que permite acceder a información sobre memoria del proceso especificado.