Função ZwQueryValueKey (wdm.h)

A rotina ZwQueryValueKey retorna uma entrada de valor para uma chave do Registro.

Sintaxe

NTSYSAPI NTSTATUS ZwQueryValueKey(
  [in]            HANDLE                      KeyHandle,
  [in]            PUNICODE_STRING             ValueName,
  [in]            KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
  [out, optional] PVOID                       KeyValueInformation,
  [in]            ULONG                       Length,
  [out]           PULONG                      ResultLength
);

Parâmetros

[in] KeyHandle

Manipule para a chave da qual as entradas de valor de leitura. Esse identificador é criado por uma chamada bem-sucedida para ZwCreateKey ou ZwOpenKey.

[in] ValueName

Ponteiro para o nome da entrada de valor para o qual obter dados.

[in] KeyValueInformationClass

Um valor KEY_VALUE_INFORMATION_CLASS que determina o tipo de informações retornadas no buffer KeyValueInformation .

[out, optional] KeyValueInformation

Ponteiro para um buffer alocado pelo chamador que recebe as informações solicitadas.

[in] Length

Especifica o tamanho, em bytes, do buffer KeyValueInformation .

[out] ResultLength

Ponteiro para uma variável que recebe o tamanho, em bytes, das informações de chave. Se a rotina ZwQueryValueKey retornar STATUS_SUCCESS, os chamadores poderão usar o valor dessa variável para determinar a quantidade de dados retornados. Se a rotina retornar STATUS_BUFFER_OVERFLOW ou STATUS_BUFFER_TOO_SMALL, os chamadores poderão usar o valor dessa variável para determinar o tamanho do buffer necessário para manter as informações de chave.

Retornar valor

ZwQueryValueKey retorna STATUS_SUCCESS com êxito ou o código de erro apropriado em caso de falha. Os possíveis valores de código de erro incluem:

Código de retorno Descrição
STATUS_OBJECT_NAME_NOT_FOUND O valor do Registro não estava disponível.
STATUS_BUFFER_OVERFLOW O buffer fornecido é muito pequeno e apenas os dados parciais foram gravados no buffer. ResultLength é definido como o tamanho mínimo necessário para manter as informações solicitadas.
STATUS_BUFFER_TOO_SMALL O buffer fornecido é muito pequeno e nenhum dado foi gravado no buffer. ResultLength é definido como o tamanho mínimo necessário para manter as informações solicitadas.
STATUS_INVALID_PARAMETER O parâmetro KeyInformationClass não é um valor KEY_VALUE_INFORMATION_CLASS válido.

Comentários

O KeyHandle passado para ZwQueryValueKey deve ter sido aberto com acesso KEY_QUERY_VALUE. Isso é feito passando KEY_QUERY_VALUE, KEY_READ ou KEY_ALL_ACCESS como o parâmetro DesiredAccess para ZwCreateKey ou ZwOpenKey.

Para obter mais informações sobre como trabalhar com chaves do Registro, consulte Usando o Registro em um Driver.

Se a chamada para essa função ocorrer no modo de usuário, você deverá usar o nome "NtQueryValueKey" em vez de "ZwQueryValueKey". Para chamadas de drivers no modo kernel, as versões NtXxx e ZwXxx de uma rotina dos Serviços do 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 dos Serviços de Sistema Nativo.

Requisitos

Requisito Valor
Plataforma de Destino Universal
Cabeçalho wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Regras de conformidade de DDI HwStorPortProhibitedDDIs(storport), IrqlZwPassive(wdm), PowerIrpDDis(wdm), ZwRegistryCreate(storport), ZwRegistryCreate(storport), ZwRegistryCreate(wdm), ZwRegistryOpen(storport), ZwRegistryOpen(storport), ZwRegistryOpen(wdm)

Confira também

KEY_VALUE_BASIC_INFORMATION

KEY_VALUE_FULL_INFORMATION

KEY_VALUE_INFORMATION_CLASS

KEY_VALUE_PARTIAL_INFORMATION

Usando versões Nt e Zw das rotinas dos Serviços de Sistema Nativo

ZwCreateKey

ZwEnumerateValueKey

ZwOpenKey