(wdm.h) RTL_QUERY_REGISTRY_ROUTINE回调函数

QueryRoutine 例程提供有关在前面调用 RtlQueryRegistryValues 例程时请求的注册表值的信息。

语法

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
)
{...}

参数

[in] ValueName

指定与请求的注册表值关联的注册表项。 此参数是指向包含键的以 null 结尾的 Unicode 字符串的指针。

[in] ValueType

指定使用指定的注册表项存储的注册表值的类型。 有关注册表值类型的详细信息,请参阅 KEY_VALUE_BASIC_INFORMATIONType 参数的定义。

[in] ValueData

指向与指定注册表项关联的数据值的指针。 驱动程序必须将此值视为只读。 有关 ValueData 指向的值数据类型的详细信息,请参阅 KEY_VALUE_BASIC_INFORMATION 中的 Type 参数的定义。

[in] ValueLength

指定 ValueData 指向的值的长度(以字节为单位)。

[in, optional] Context

指定驱动程序在对 RtlQueryRegistryValues 的前面调用中指定的 Context 参数值。

[in, optional] EntryContext

指定 QueryTable 数组元素中的 EntryContext 值,该元素是驱动程序在前面调用 RtlQueryRegistryValues 中指定的。

返回值

如果调用成功,QueryRoutine 将返回STATUS_SUCCESS。 否则,它将返回相应的错误状态代码。 仅使用 Ntstatus.h 头文件中定义的状态代码。

注解

内核模式驱动程序实现 QueryRoutine 例程。 此例程由 RtlQueryRegistryValues 例程调用。

为了获取有关一个或多个注册表值的信息,驱动程序调用 RtlQueryRegistryValues 并将指针作为输入参数传递给 RTL_QUERY_REGISTRY_TABLE 结构的数组。 此数组中的每个结构都包含指向驱动程序实现的 QueryRoutine 例程的指针,以及有关特定注册表值的信息的请求。 对于数组中的每个结构, RtlQueryRegistryValues 调用指定的 QueryRoutine 例程,并将一组参数传递给此例程,其中包含所请求的有关指定注册表值的信息。

有关 RTL_QUERY_REGISTRY_TABLE 结构的详细信息,请参阅 RtlQueryRegistryValues

示例

若要定义 QueryRoutine 回调例程,必须先提供一个函数声明,用于标识要定义的回调例程的类型。 Windows 为驱动程序提供了一组回调函数类型。 使用回调函数类型声明函数可帮助 驱动程序的代码分析静态驱动程序验证程序 (SDV) 和其他验证工具查找错误,这是为 Windows 操作系统编写驱动程序的要求。

例如,若要定义名为 MyQueryRoutineQueryRoutine 回调例程,请使用 RTL_QUERY_REGISTRY_ROUTINE 类型,如以下代码示例所示:

RTL_QUERY_REGISTRY_ROUTINE MyQueryRoutine;

然后,按如下所示实现回调例程:

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

RTL_QUERY_REGISTRY_ROUTINE函数类型在 Wdm.h 头文件中定义。 若要在运行代码分析工具时更准确地识别错误,请务必将 _Use_decl_annotations_ 注释添加到函数定义。 注释 _Use_decl_annotations_ 可确保使用应用于头文件中RTL_QUERY_REGISTRY_ROUTINE函数类型的注释。 有关函数声明要求的详细信息,请参阅 使用 WDM 驱动程序的函数角色类型声明函数。 有关 的信息 _Use_decl_annotations_,请参阅 批注函数行为

要求

要求
目标平台 桌面
标头 wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h)
IRQL 在 PASSIVE_LEVEL 调用。

另请参阅

KEY_VALUE_BASIC_INFORMATION

RtlQueryRegistryValues