RTL_QUERY_REGISTRY_ROUTINE回调函数 (wdm.h)
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_INFORMATION中 类型 参数的定义。
[in] ValueData
指向与指定注册表项关联的数据值的指针。 驱动程序必须将此值视为只读。 有关 ValueData 指向的值数据类型的详细信息,请参阅 KEY_VALUE_BASIC_INFORMATION中的 Type 参数的定义。
[in] ValueLength
指定 ValueData 指向的值的长度(以字节为单位)。
[in, optional] Context
指定在上述调用 RtlQueryRegistryValues中指定的驱动程序 上下文 参数值。
[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作系统编写驱动程序的要求。
例如,若要定义名为 MyQueryRoutine
的 QueryRoutine 回调例程,请使用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调用。 |