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_INFORMATION、 KEY_VALUE_FULL_INFORMATION 或 KEY_VALUE_PARTIAL_INFORMATION 类型的结构,具体取决于 KeyValueInformationClass 的值。 结构后跟其他数据,其大小取决于键值的数据类型。
[in] Length
KeyValueInformation 缓冲区的大小(以字节为单位),调用方必须根据给定的 KeyValueInformationClass 设置该大小。 要使调用成功,缓冲区必须至少与方法写入缓冲区中的数据一样大。
[out] ResultLength
结果数据的长度的输出指针。 此参数指向调用方分配的 ULONG 变量,该方法在该变量中写入计数,指定实际写入 KeyValueInformation 缓冲区的字节数。 但是,如果指定的缓冲区长度太小而无法包含信息,该方法将改为输出所需的缓冲区大小,并返回STATUS_BUFFER_OVERFLOW。
返回值
EnumerateValueKey
如果调用成功将请求的信息复制到 KeyValueInformation 缓冲区中,则返回STATUS_SUCCESS。 如果指定的缓冲区大小太小,无法接收所有可用信息,该方法将返回STATUS_BUFFER_OVERFLOW。 否则,该方法将返回相应的错误代码。 下表显示了一些可能的返回状态代码。
返回代码 | 说明 |
---|---|
|
指示指定的缓冲区太小,无法接收任何信息。 |
|
指示传递给方法的参数之一无效。 |
|
指示 索引参数大于 或等于) 的值键数 (没有更多的值键可用。 |
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
标头 | portcls.h (包括 Portcls.h) |
IRQL | PASSIVE_LEVEL |