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
要枚举其值条目的注册表项的句柄。 成功调用 ZwCreateKey 或 ZwOpenKey 会创建此句柄。
[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。 |
注解
传递给 ZwEnumerateValueKey 的 KeyHandle 必须已以KEY_QUERY_VALUE访问权限打开。 这是通过将 KEY_QUERY_VALUE、KEY_READ 或 KEY_ALL_ACCESS 作为 DesiredAccess 参数传递给 ZwCreateKey 或 ZwOpenKey 来实现 的。
索引只是一种在具有值条目的子项之间进行选择的方法。 对具有相同 Index 的 ZwEnumerateValueKey 的两次调用不能保证返回相同的结果。
有关使用注册表项的详细信息,请参阅 在驱动程序中使用注册表。
如果在用户模式下调用此函数,则应使用名称“NtEnumerateValueKey”而不是“ZwEnumerateValueKey”。
对于来自内核模式驱动程序的调用,Windows Native System Services 例程的 NtXxx 和 ZwXxx 版本在处理和解释输入参数的方式上的行为可能有所不同。 有关例程的 NtXxx 和 ZwXxx 版本之间的关系的详细信息,请参阅 使用本机系统服务例程的 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) |