Função NtQueryVirtualMemory (ntifs.h)
O NtQueryVirtualMemory rotina determina o estado, a proteção e o tipo de uma região de páginas dentro do espaço de endereço virtual do processo especificado.
Sintaxe
__kernel_entry NTSYSCALLAPI NTSTATUS NtQueryVirtualMemory(
[in] HANDLE ProcessHandle,
[in, optional] PVOID BaseAddress,
[in] MEMORY_INFORMATION_CLASS MemoryInformationClass,
[out] PVOID MemoryInformation,
[in] SIZE_T MemoryInformationLength,
[out, optional] PSIZE_T ReturnLength
);
Parâmetros
[in] ProcessHandle
Manipule o processo em cujo contexto residem as páginas a serem consultadas. Use a macro NtCurrentProcess
[in, optional] BaseAddress
O endereço base da região das páginas a serem consultadas. Esse valor é arredondado para baixo para o próximo limite de endereço de página de host.
[in] MemoryInformationClass
A classe de informações de memória sobre a qual recuperar informações. Atualmente, o único valor de MEMORY_INFORMATION_CLASS com suporte é MemoryBasicInformation.
[out] MemoryInformation
Ponteiro para um buffer que recebe as informações especificadas. O formato e o conteúdo do buffer dependem da classe de informações especificada no parâmetro
[in] MemoryInformationLength
Especifica o comprimento, em bytes, do buffer para o qual MemoryInformation aponta.
[out, optional] ReturnLength
Um ponteiro opcional que, se especificado, recebe o número de bytes colocados no buffer MemoryInformation.
Valor de retorno
Retorna STATUS_SUCCESS se a chamada for bem-sucedida. Se a chamada falhar, os códigos de erro possíveis incluem o seguinte:
Código de retorno | Descrição |
---|---|
STATUS_ACCESS_DENIED | O chamador não tinha direitos de acesso suficientes para executar a ação solicitada. |
STATUS_ACCESS_VIOLATION | O endereço base especificado é um endereço virtual inválido. |
STATUS_INFO_LENGTH_MISMATCH | O buffer MemoryInformation |
STATUS_INVALID_INFO_CLASS | O parâmetro MemoryInformationClass |
STATUS_INVALID_PARAMETER | O endereço base especificado está fora do intervalo de endereços acessíveis. |
Observações
ZwQueryVirtualMemory determina o estado da primeira página dentro da região e verifica as entradas subsequentes no mapa de endereços do processo do endereço base para cima até que todo o intervalo de páginas tenha sido verificado ou até que uma página com um conjunto de atributos não correspondente seja encontrada. Os atributos de região, o comprimento da região das páginas com atributos correspondentes e um valor de status apropriado são retornados.
Se toda a região das páginas não tiver um conjunto correspondente de atributos, as sub-regiões dentro de uma reserva de endereço serão retornadas individualmente. Eles terão o mesmo valor *MemoryInformation.AllocationBase, seus tamanhos individuais estarão em *MemoryInformation.RegionSizee o tamanho total da reserva de endereços pode ser obtido somando todos os valores de *MemoryInformation.RegionSize associados a um determinado valor de *MemoryInformation.AllocationBase.
NtQueryVirtualMemory e ZwQueryVirtualMemory são duas versões da mesma rotina dos Serviços de Sistema Nativo do Windows.
Para chamadas de drivers no modo kernel, as versões NtXxx e Zwxxx versões de uma rotina dos Serviços de Sistema Nativo do Windows podem se comportar de forma diferente na maneira como lidam e interpretam parâmetros de entrada. Para obter mais informações sobre a relação entre as versões NtXxx e ZwXxx de uma rotina, consulte Usando versões Nt e Zw das rotinas de serviços do sistema nativo.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows 2000 |
da Plataforma de Destino |
Universal |
cabeçalho | ntifs.h |
biblioteca | NtosKrnl.lib |
de DLL |
NtosKrnl.exe |