IRegistryKey::EnumerateValueKey 方法(portcls.h)

EnumerateValueKey 方法返回包含值键的注册表项的相关信息。

语法

NTSTATUS EnumerateValueKey(
  [in]  ULONG                       Index,
  [in]  KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
  [out] PVOID                       KeyValueInformation,
  [in]  ULONG                       Length,
  [out] PULONG                      ResultLength
);

参数

[in] Index

指定子项索引。 此参数标识其值被请求的子项。 如果键包含 n 子项,则有效索引范围为 0 到 n-1。 如果索引超出此范围,该方法将返回STATUS_NO_MORE_ENTRIES。

[in] KeyValueInformationClass

指定要在缓冲区中返回的信息的类型。 将此参数设置为以下KEY_VALUE_INFORMATION_CLASS枚举值之一:

  • KeyValueBasicInformation
  • KeyValueFullInformation
  • KeyValuePartialInformation

[out] KeyValueInformation

键值的输出指针。 此参数指向调用方分配的缓冲区,该方法将请求的数据写入其中。 缓冲区包含 KEY_VALUE_BASIC_INFORMATIONKEY_VALUE_FULL_INFORMATIONKEY_VALUE_PARTIAL_INFORMATION类型的结构,具体取决于 keyValueInformationClass 的值。 结构后跟其他数据,其大小取决于键值的数据类型。

[in] Length

KeyValueInformation 缓冲区的大小(以字节为单位),调用方必须根据给定的 KeyValueInformationClass设置该缓冲区的大小。 若要成功调用,缓冲区必须至少与方法写入缓冲区的数据一样大。

[out] ResultLength

生成的数据的长度的输出指针。 此参数指向调用方分配的 ULONG 变量,该方法将写入一个计数,该变量指定实际写入到 KeyValueInformation 缓冲区中的字节数。 但是,如果指定的缓冲区长度太小,无法包含信息,则该方法会输出所需的缓冲区大小并返回STATUS_BUFFER_OVERFLOW。

返回值

如果调用成功将请求的信息复制到 KeyValueInformation 缓冲区中,EnumerateValueKey 将返回STATUS_SUCCESS。 如果指定的缓冲区大小太小,无法接收所有可用信息,该方法将返回STATUS_BUFFER_OVERFLOW。 否则,该方法将返回适当的错误代码。 下表显示了一些可能的返回状态代码。

返回代码 描述
STATUS_BUFFER_TOO_SMALL
指示指定的缓冲区太小,无法接收任何信息。
STATUS_INVALID_PARAMETER
指示传递给方法的参数之一无效。
STATUS_NO_MORE_ENTRIES
指示没有更多的值键可用(Index 参数大于或等于值键数)。

要求

要求 价值
目标平台 普遍
标头 portcls.h (包括 Portcls.h)
IRQL PASSIVE_LEVEL

另请参阅

IRegistryKey

KEY_VALUE_BASIC_INFORMATION

KEY_VALUE_FULL_INFORMATION

KEY_VALUE_PARTIAL_INFORMATION

ZwEnumerateValueKey