Função VirtualQuery (memoryapi.h)

Recupera informações sobre um intervalo de páginas no espaço de endereço virtual do processo de chamada.

Para recuperar informações sobre um intervalo de páginas no espaço de endereço de outro processo, use a função VirtualQueryEx .

Sintaxe

SIZE_T VirtualQuery(
  [in, optional] LPCVOID                   lpAddress,
  [out]          PMEMORY_BASIC_INFORMATION lpBuffer,
  [in]           SIZE_T                    dwLength
);

Parâmetros

[in, optional] lpAddress

Um ponteiro para o endereço base da região de páginas a ser consultada. Esse valor é arredondado para baixo até o limite da próxima página. Para determinar o tamanho de uma página no computador host, use a função GetSystemInfo .

Se lpAddress especificar um endereço acima do endereço de memória mais alto acessível ao processo, a função falhará com ERROR_INVALID_PARAMETER.

[out] lpBuffer

Um ponteiro para uma estrutura MEMORY_BASIC_INFORMATION na qual as informações sobre o intervalo de páginas especificado são retornadas.

[in] dwLength

O tamanho do buffer apontado pelo parâmetro lpBuffer , em bytes.

Retornar valor

O valor retornado é o número real de bytes retornados no buffer de informações.

Se a função falhar, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError. Os valores de erro possíveis incluem ERROR_INVALID_PARAMETER.

Comentários

O VirtualQuery fornece informações sobre uma região de páginas consecutivas começando em um endereço especificado que compartilham os seguintes atributos:

  • O estado de todas as páginas é o mesmo (MEM_COMMIT, MEM_RESERVE, MEM_FREE, MEM_PRIVATE, MEM_MAPPED ou MEM_IMAGE).
  • Se a página inicial não for gratuita, todas as páginas na região serão parte da mesma alocação inicial de páginas criadas por uma única chamada para VirtualAlloc, MapViewOfFile ou uma das seguintes versões estendidas dessas funções: VirtualAllocEx, VirtualAllocExNuma, MapViewOfFileEx, MapViewOfFileExNuma.
  • O acesso concedido a todas as páginas é o mesmo (PAGE_READONLY, PAGE_READWRITE, PAGE_NOACCESS, PAGE_WRITECOPY, PAGE_EXECUTE, PAGE_EXECUTE_READ, PAGE_EXECUTE_READWRITE, PAGE_EXECUTE_WRITECOPY, PAGE_GUARD ou PAGE_NOCACHE).

A função determina os atributos da primeira página na região e, em seguida, examina páginas subsequentes até examinar todo o intervalo de páginas ou até encontrar uma página com um conjunto de atributos sem correspondência. A função retorna os atributos e o tamanho da região de páginas com atributos correspondentes, em bytes. Por exemplo, se houver uma região de 40 megabytes (MB) de memória livre, e VirtualQuery for chamado em uma página de 10 MB na região, a função obterá um estado de MEM_FREE e um tamanho de 30 MB.

Se uma página de cópia na gravação compartilhada for modificada, ela se tornará privada para o processo que modificou a página. No entanto, a função VirtualQuery continuará a relatar páginas como MEM_MAPPED (para exibições de dados) ou MEM_IMAGE (para exibições de imagem executáveis) em vez de MEM_PRIVATE. Para detectar se a cópia na gravação ocorreu para uma página específica, acesse a página ou bloqueie-a usando a função VirtualLock para verificar se a página está residente na memória e, em seguida, use a função QueryWorkingSetEx para marcar o bit Compartilhado nas informações do conjunto de trabalho estendido para a página. Se o bit Compartilhado estiver claro, a página será privada.

Essa função relata uma região de páginas na memória do processo de chamada e a função VirtualQueryEx relata em uma região de páginas na memória de um processo especificado.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [aplicativos da área de trabalho | aplicativos UWP]
Servidor mínimo com suporte Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho memoryapi.h (inclua Windows.h, Memoryapi.h)
Biblioteca onecore.lib
DLL Kernel32.dll

Confira também

Getsysteminfo

MEMORY_BASIC_INFORMATION

Mapviewoffile

Funções de gerenciamento da memória

Funções de memória virtual

VirtualQueryEx

APIs Vertdll disponíveis em enclaves de VBS