zwEnumerateValueKey 函数 (wdm.h)

ZwEnumerateValueKey 例程获取有关打开键的值条目的信息。

语法

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

参数

[in] KeyHandle

要枚举其值条目的注册表项的句柄。 成功调用 ZwCreateKeyZwOpenKey 会创建此句柄。

[in] Index

需要其值信息的子项的从零开始的索引。

[in] KeyValueInformationClass

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

[out, optional] KeyValueInformation

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

[in] Length

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

[out] ResultLength

指向接收值信息的大小(以字节为单位)的变量的指针。 如果此例程返回STATUS_SUCCESS,则变量指示返回的数据量。 如果此例程返回STATUS_BUFFER_OVERFLOW或STATUS_BUFFER_TOO_SMALL,则变量指示保存值信息所需的缓冲区大小。

返回值

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

返回代码 说明
STATUS_BUFFER_OVERFLOW 提供的缓冲区太小,只将部分数据写入缓冲区。 *ResultLength 设置为保存所请求信息所需的最小大小。
STATUS_BUFFER_TOO_SMALL 提供的缓冲区太小,并且未向缓冲区写入任何数据。 *ResultLength 设置为保存所请求信息所需的最小大小。
STATUS_INVALID_PARAMETER KeyInformationClass 参数不是有效的KEY_VALUE_INFORMATION_CLASS值。
STATUS_NO_MORE_ENTRIES Index 值在 KeyHandle 指定的注册表项范围内。 例如,如果键具有 n 个子项,则对于任何大于 n-1 的值,例程将返回STATUS_NO_MORE_ENTRIES。

注解

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

索引只是一种在具有值条目的子项之间进行选择的方法。 对具有相同 IndexZwEnumerateValueKey 的两次调用不能保证返回相同的结果。

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

如果在用户模式下调用此函数,则应使用名称“NtEnumerateValueKey”而不是“ZwEnumerateValueKey”。

对于来自内核模式驱动程序的调用,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_PARTIAL_INFORMATION

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

ZwClose

ZwCreateKey

ZwOpenKey

ZwQueryValueKey