IRegistryKey::EnumerateKey 方法 (portcls.h)

方法 EnumerateKey 返回有关打开键的子项的信息。

语法

NTSTATUS EnumerateKey(
  [in]  ULONG                 Index,
  [in]  KEY_INFORMATION_CLASS KeyInformationClass,
  [out] PVOID                 KeyInformation,
  [in]  ULONG                 Length,
  [out] PULONG                ResultLength
);

参数

[in] Index

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

[in] KeyInformationClass

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

  • KeyBasicInformation
  • KeyFullInformation
  • KeyNodeInformation

[out] KeyInformation

指向密钥信息缓冲区的指针。 此参数指向调用方分配的缓冲区,方法在其中写入请求的数据。 缓冲区包含 KEY_BASIC_INFORMATIONKEY_FULL_INFORMATIONKEY_NODE_INFORMATION 类型的结构,具体取决于 KeyInformationClass 的值。 结构后跟一个 Unicode 字符字符串,其大小取决于所请求的有关密钥的信息类型。

[in] Length

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

[out] ResultLength

结果数据的长度的输出指针。 此参数指向调用方分配的 ULONG 变量,该方法在该变量中写入计数,指定实际写入 KeyInformation 缓冲区的字节数。 但是,如果指定的缓冲区长度太小而无法包含信息,该方法将改为输出所需的缓冲区大小,并返回STATUS_BUFFER_OVERFLOW。

返回值

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

返回代码 说明
STATUS_BUFFER_TOO_SMALL
指示指定的缓冲区太小,无法接收任何信息。
STATUS_NO_MORE_ENTRIES
指示没有更多的子项可用, (子项索引大于或等于) 的子项数。

要求

要求
目标平台 通用
标头 portcls.h (包括 Portcls.h)
IRQL PASSIVE_LEVEL

另请参阅

IRegistryKey

KEY_BASIC_INFORMATION

KEY_FULL_INFORMATION

KEY_NODE_INFORMATION

ZwEnumerateKey