Compartilhar via


Função VirtualQueryEx (memoryapi.h)

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

Sintaxe

SIZE_T VirtualQueryEx(
  [in]           HANDLE                    hProcess,
  [in, optional] LPCVOID                   lpAddress,
  [out]          PMEMORY_BASIC_INFORMATION lpBuffer,
  [in]           SIZE_T                    dwLength
);

Parâmetros

[in] hProcess

Um identificador para o processo cujas informações de memória são consultadas. O identificador deve ter sido aberto com o direito de acesso PROCESS_QUERY_INFORMATION , que permite usar o identificador para ler informações do objeto de processo. Para obter mais informações, consulte Direitos de acesso e segurança do processo.

[in, optional] lpAddress

Um ponteiro para o endereço base da região das páginas a serem consultadas. 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.

Valor retornado

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 possíveis valores de erro incluem ERROR_INVALID_PARAMETER.

Comentários

VirtualQueryEx 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 VirtualQueryEx determina os atributos da primeira página na região e, em seguida, examina as 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 MB (megabyte) de memória livre, e VirtualQueryEx 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 VirtualQueryEx continuará relatando 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 QueryWorkingSet ou 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.

Requisitos

   
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

MapViewOfFileEx

Funções de gerenciamento da memória

Funções de memória virtual

VirtualAllocEx

VirtualProtectEx