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_INFORMATION、KEY_FULL_INFORMATION或 KEY_NODE_INFORMATION类型的结构,具体取决于 KeyInformationClass的值。 结构后跟 Unicode 字符的字符串,其大小取决于所请求的有关密钥的信息的类型。
[in] Length
指定 KeyInformation 缓冲区的大小(调用方必须根据给定的 KeyInformationClass设置)。 若要成功调用,缓冲区必须至少与方法写入缓冲区的数据一样大。
[out] ResultLength
生成的数据的长度的输出指针。 此参数指向调用方分配的 ULONG 变量,该方法在其中写入计数,指定实际写入 KeyInformation 缓冲区的字节数。 但是,如果指定的缓冲区长度太小,无法包含信息,则该方法会输出所需的缓冲区大小并返回STATUS_BUFFER_OVERFLOW。
返回值
如果调用成功检索 EnumerateKey 缓冲区中请求的信息,则 返回STATUS_SUCCESS。 如果指定的缓冲区大小太小,无法接收所有可用信息,该方法将返回STATUS_BUFFER_OVERFLOW。 否则,该方法将返回适当的错误代码。 下表显示了一些可能的返回状态代码。
| 返回代码 | 描述 |
|---|---|
|
指示指定的缓冲区太小,无法接收任何信息。 |
|
指示没有更多的子项可用(子项索引大于或等于子项的数目)。 |
要求
| 要求 | 价值 |
|---|---|
| 目标平台 | 普遍 |
| 标头 | portcls.h (包括 Portcls.h) |
| IRQL | PASSIVE_LEVEL |