RTL_QUERY_REGISTRY_ROUTINE función de devolución de llamada (wdm.h)

La rutina QueryRoutine proporciona información sobre un valor del Registro que se solicitó en una llamada anterior a la rutina RtlQueryRegistryValues .

Sintaxis

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 la clave del Registro asociada al valor del Registro solicitado. Este parámetro es un puntero a una cadena Unicode terminada en null que contiene la clave.

[in] ValueType

Especifica el tipo de valor del Registro que se almacena con la clave del Registro especificada. Para obtener más información sobre los tipos de valor del Registro, consulte la definición del parámetro Type en KEY_VALUE_BASIC_INFORMATION.

[in] ValueData

Puntero al valor de datos asociado a la clave del Registro especificada. El controlador debe tratar este valor como de solo lectura. Para obtener más información sobre el tipo de datos de valor a los que apunta ValueData , vea la definición del parámetro Type en KEY_VALUE_BASIC_INFORMATION.

[in] ValueLength

Especifica la longitud, en bytes, del valor al que Apunta ValueData .

[in, optional] Context

Especifica el valor del parámetro Context que el controlador especificado en la llamada anterior a RtlQueryRegistryValues.

[in, optional] EntryContext

Especifica un valor EntryContext en un elemento de matriz QueryTable que el controlador especificado en la llamada anterior a RtlQueryRegistryValues.

Valor devuelto

QueryRoutine devuelve STATUS_SUCCESS si la llamada se realiza correctamente. De lo contrario, devuelve un código de estado de error adecuado. Use solo los códigos de estado definidos en el archivo de encabezado Ntstatus.h.

Comentarios

Un controlador en modo kernel implementa una rutina QueryRoutine . La rutina RtlQueryRegistryValues llama a esta rutina.

Para obtener información sobre uno o varios valores del Registro, el controlador llama a RtlQueryRegistryValues y pasa un puntero, como parámetro de entrada, a una matriz de estructuras de RTL_QUERY_REGISTRY_TABLE . Cada estructura de esta matriz contiene un puntero a una rutina QueryRoutine implementada por el controlador y una solicitud de información sobre un valor de registro determinado. Para cada estructura de la matriz, RtlQueryRegistryValues llama a la rutina QueryRoutine especificada y pasa a esta rutina un conjunto de parámetros que contienen la información solicitada sobre el valor del Registro especificado.

Para obtener más información sobre la estructura de RTL_QUERY_REGISTRY_TABLE , vea RtlQueryRegistryValues.

Ejemplos

Para definir una rutina de devolución de llamada de QueryRoutine , primero debe proporcionar una declaración de función que identifique el tipo de rutina de devolución de llamada que va a definir. Windows proporciona un conjunto de tipos de función de devolución de llamada para controladores. Declarar una función mediante los tipos de función de devolución de llamada ayuda a Code Analysis for Drivers, Static Driver Verifier (SDV) y otras herramientas de comprobación encuentran errores y es un requisito para escribir controladores para el sistema operativo Windows.

Por ejemplo, para definir una rutina de devolución de llamada queryRoutine denominada MyQueryRoutine, use el tipo RTL_QUERY_REGISTRY_ROUTINE como se muestra en este ejemplo de código:

RTL_QUERY_REGISTRY_ROUTINE MyQueryRoutine;

A continuación, implemente la rutina de devolución de llamada de la siguiente manera:

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

El tipo de función RTL_QUERY_REGISTRY_ROUTINE se define en el archivo de encabezado Wdm.h. Para identificar con más precisión los errores al ejecutar las herramientas de análisis de código, asegúrese de agregar la anotación a la _Use_decl_annotations_ definición de la función. La _Use_decl_annotations_ anotación garantiza que se usen las anotaciones que se aplican al tipo de función RTL_QUERY_REGISTRY_ROUTINE en el archivo de encabezado. Para obtener más información sobre los requisitos de las declaraciones de función, vea Declarar funciones mediante tipos de roles de función para controladores WDM. Para obtener información sobre _Use_decl_annotations_, consulte Anotación del comportamiento de la función.

Requisitos

Requisito Value
Plataforma de destino Escritorio
Encabezado wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h)
IRQL Se llama en PASSIVE_LEVEL.

Consulte también

KEY_VALUE_BASIC_INFORMATION

RtlQueryRegistryValues