RTL_QUERY_REGISTRY_ROUTINE função de retorno de chamada (wdm.h)

A rotina QueryRoutine fornece informações sobre um valor do Registro que foi solicitado em uma chamada anterior para a rotina RtlQueryRegistryValues .

Sintaxe

RTL_QUERY_REGISTRY_ROUTINE RtlQueryRegistryRoutine;

NTSTATUS RtlQueryRegistryRoutine(
  [in]           PWSTR ValueName,
  [in]           ULONG ValueType,
  [in]           PVOID ValueData,
  [in]           ULONG ValueLength,
  [in, optional] PVOID Context,
  [in, optional] PVOID EntryContext
)
{...}

Parâmetros

[in] ValueName

Especifica a chave do Registro associada ao valor do Registro solicitado. Esse parâmetro é um ponteiro para uma cadeia de caracteres Unicode terminada em nulo que contém a chave.

[in] ValueType

Especifica o tipo de valor do Registro armazenado com a chave do Registro especificada. Para obter mais informações sobre os tipos de valor do Registro, consulte a definição do parâmetro Type em KEY_VALUE_BASIC_INFORMATION.

[in] ValueData

Um ponteiro para o valor de dados associado à chave do Registro especificada. O driver deve tratar esse valor como somente leitura. Para obter mais informações sobre o tipo de dados de valor para o qual ValueData aponta, consulte a definição do parâmetro Type em KEY_VALUE_BASIC_INFORMATION.

[in] ValueLength

Especifica o comprimento, em bytes, do valor para o qual ValueData aponta.

[in, optional] Context

Especifica o valor do parâmetro Context especificado pelo driver na chamada anterior para RtlQueryRegistryValues.

[in, optional] EntryContext

Especifica um valor EntryContext em um elemento de matriz QueryTable que o driver especificou na chamada anterior para RtlQueryRegistryValues.

Retornar valor

QueryRoutine retornará STATUS_SUCCESS se a chamada for bem-sucedida. Caso contrário, ele retornará um erro apropriado status código. Use apenas status códigos definidos no arquivo de cabeçalho Ntstatus.h.

Comentários

Um driver de modo kernel implementa uma rotina QueryRoutine . Essa rotina é chamada pela rotina RtlQueryRegistryValues .

Para obter informações sobre um ou mais valores de Registro, o driver chama RtlQueryRegistryValues e passa um ponteiro, como um parâmetro de entrada, para uma matriz de estruturas RTL_QUERY_REGISTRY_TABLE . Cada estrutura nessa matriz contém um ponteiro para uma rotina QueryRoutine implementada pelo driver e uma solicitação de informações sobre um valor específico do Registro. Para cada estrutura na matriz, RtlQueryRegistryValues chama a rotina QueryRoutine especificada e passa para essa rotina um conjunto de parâmetros que contêm as informações solicitadas sobre o valor do Registro especificado.

Para obter mais informações sobre a estrutura RTL_QUERY_REGISTRY_TABLE , consulte RtlQueryRegistryValues.

Exemplos

Para definir uma rotina de retorno de chamada queryRoutine , primeiro você deve fornecer uma declaração de função que identifique o tipo de rotina de retorno de chamada que você está definindo. O Windows fornece um conjunto de tipos de função de retorno de chamada para drivers. Declarar uma função usando os tipos de função de retorno de chamada ajuda a Análise de Código para Drivers, SDV ( Verificador de Driver Estático ) e outras ferramentas de verificação a encontrar erros e é um requisito para escrever drivers para o sistema operacional Windows.

Por exemplo, para definir uma rotina de retorno de chamada queryRoutine chamada MyQueryRoutine, use o tipo RTL_QUERY_REGISTRY_ROUTINE conforme mostrado neste exemplo de código:

RTL_QUERY_REGISTRY_ROUTINE MyQueryRoutine;

Em seguida, implemente sua rotina de retorno de chamada da seguinte maneira:

_Use_decl_annotations_
NTSTATUS
  MyQueryRoutine(
    PWSTR ValueName,
    ULONG ValueType,
    PVOID ValueData,
    ULONG ValueLength,
    PVOID Context,
    PVOID EntryContext
    )
  {
      // Function body
  }

O tipo de função RTL_QUERY_REGISTRY_ROUTINE é definido no arquivo de cabeçalho Wdm.h. Para identificar erros com mais precisão ao executar as ferramentas de análise de código, adicione a _Use_decl_annotations_ anotação à sua definição de função. A _Use_decl_annotations_ anotação garante que as anotações aplicadas ao tipo de função RTL_QUERY_REGISTRY_ROUTINE no arquivo de cabeçalho sejam usadas. Para obter mais informações sobre os requisitos para declarações de função, consulte Declarando funções usando tipos de função de função para drivers WDM. Para obter informações sobre _Use_decl_annotations_, consulte Anotando o comportamento da função.

Requisitos

Requisito Valor
Plataforma de Destino Área de Trabalho
Cabeçalho wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
IRQL Chamado em PASSIVE_LEVEL.

Confira também

KEY_VALUE_BASIC_INFORMATION

RtlQueryRegistryValues