Função ZwEnumerateValueKey (wdm.h)

A rotina ZwEnumerateValueKey obtém informações sobre as entradas de valor de uma chave aberta.

Sintaxe

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

Parâmetros

[in] KeyHandle

Manipule para a chave do Registro para a qual você deseja enumerar entradas de valor. Uma chamada bem-sucedida para ZwCreateKey ou ZwOpenKey cria esse identificador.

[in] Index

O índice baseado em zero da subchave para a qual você deseja obter informações de valor.

[in] KeyValueInformationClass

Especifica um valor KEY_VALUE_INFORMATION_CLASS que determina o tipo de informação retornado 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 valor. Se essa rotina retornar STATUS_SUCCESS, a variável indicará a quantidade de dados retornados. Se essa rotina retornar STATUS_BUFFER_OVERFLOW ou STATUS_BUFFER_TOO_SMALL, a variável indicará o tamanho do buffer necessário para manter as informações de valor.

Retornar valor

ZwEnumerateValueKey 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_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 de KEY_VALUE_INFORMATION_CLASS válido.
STATUS_NO_MORE_ENTRIES O valor index está fora do intervalo para a chave do Registro especificada por KeyHandle. Por exemplo, se uma chave tiver n subchaves, para qualquer valor maior que n-1, a rotina retornará STATUS_NO_MORE_ENTRIES.

Comentários

O KeyHandle passado para ZwEnumerateValueKey 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.

O Índice é simplesmente uma maneira de selecionar entre subchaves com entradas de valor. Não há garantia de que duas chamadas para ZwEnumerateValueKey com o mesmo Índice retornem os mesmos resultados.

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 "NtEnumerateValueKey" em vez de "ZwEnumerateValueKey".

Para chamadas de drivers de modo kernel, as versões NtXxx e ZwXxx de uma rotina do Windows Native System Services 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 Using Nt and Zw Versions of the Native System Services Routines.

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 da DDI HwStorPortProhibitedDIs(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_PARTIAL_INFORMATION

Usando versões Nt e Zw das rotinas de serviços do sistema nativo

ZwClose

ZwCreateKey

ZwOpenKey

ZwQueryValueKey