zwQueryValueKey 函数 (wdm.h)

ZwQueryValueKey 例程返回注册表项的值条目。

语法

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

参数

[in] KeyHandle

要从中读取值条目的键的句柄。 此句柄是通过成功调用 ZwCreateKeyZwOpenKey 创建的。

[in] ValueName

指向要获取其数据的值条目名称的指针。

[in] KeyValueInformationClass

一个KEY_VALUE_INFORMATION_CLASS值,该值确定 KeyValueInformation 缓冲区中返回的信息的类型。

[out, optional] KeyValueInformation

指向调用方分配的缓冲区的指针,该缓冲区接收请求的信息。

[in] Length

指定 KeyValueInformation 缓冲区的大小(以字节为单位)。

[out] ResultLength

指向一个变量的指针,该变量接收密钥信息的大小(以字节为单位)。 如果 ZwQueryValueKey 例程返回STATUS_SUCCESS,则调用方可以使用此变量的值来确定返回的数据量。 如果例程返回STATUS_BUFFER_OVERFLOW或STATUS_BUFFER_TOO_SMALL,调用方可以使用此变量的值来确定保存密钥信息所需的缓冲区大小。

返回值

ZwQueryValueKey 在成功时返回STATUS_SUCCESS,或在失败时返回相应的错误代码。 可能的错误代码值包括:

返回代码 说明
STATUS_OBJECT_NAME_NOT_FOUND 注册表值不可用。
STATUS_BUFFER_OVERFLOW 提供的缓冲区太小,只将部分数据写入缓冲区。 ResultLength 设置为保存所请求信息所需的最小大小。
STATUS_BUFFER_TOO_SMALL 提供的缓冲区太小,并且未向缓冲区写入任何数据。 ResultLength 设置为保存所请求信息所需的最小大小。
STATUS_INVALID_PARAMETER KeyInformationClass 参数不是有效的KEY_VALUE_INFORMATION_CLASS值。

注解

传递给 ZwQueryValueKeyKeyHandle 必须已使用KEY_QUERY_VALUE访问权限打开。 这是通过将 KEY_QUERY_VALUE、KEY_READ 或 KEY_ALL_ACCESS 作为 DesiredAccess 参数传递给 ZwCreateKey 或 ZwOpenKey 来实现

有关使用注册表项的详细信息,请参阅 在驱动程序中使用注册表

如果在用户模式下调用此函数,则应使用名称“NtQueryValueKey”而不是“ZwQueryValueKey”。 对于来自内核模式驱动程序的调用,Windows Native System Services 例程的 NtXxxZwXxx 版本在处理和解释输入参数的方式上的行为可能有所不同。 有关例程的 NtXxxZwXxx 版本之间的关系的详细信息,请参阅 使用本机系统服务例程的 Nt 和 Zw 版本

要求

要求
目标平台 通用
标头 wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 符合性规则 HwStorPortProhibitedDDI (storport) IrqlZwPassive (wdm) PowerIrpDDis (wdm) ZwRegistryCreate (storport) 、ZwRegistryCreate (storport) , ZwRegistryCreate (wdm) ZwRegistryOpen (storport) 、ZwRegistryOpen (storport) 、 ZwRegistryOpen (wdm)

另请参阅

KEY_VALUE_BASIC_INFORMATION

KEY_VALUE_FULL_INFORMATION

KEY_VALUE_INFORMATION_CLASS

KEY_VALUE_PARTIAL_INFORMATION

使用本机系统服务例程的 Nt 和 Zw 版本

ZwCreateKey

ZwEnumerateValueKey

ZwOpenKey