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).
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 |