OREnumValue 函数

枚举脱机注册表配置单元中指定打开的注册表项的值。 每次调用函数时,函数都会检索指定键下一个值的信息。

语法

DWORD OREnumValue(
  _In_        ORHKEY Handle,
  _In_        DWORD  dwIndex,
  _Out_       PWSTR  lpValueName,
  _Inout_     PDWORD lpcValueName,
  _Out_opt_   PDWORD lpType,
  _Out_opt_   PBYTE  lpData,
  _Inout_opt_ PDWORD lpcbData
);

参数

句柄 [in]

脱机注册表配置单元中打开的注册表项的句柄。

dwIndex [in]

要检索的值的索引。 首次调用函数时,此参数应为零,然后递增以用于后续调用。

由于值未排序,因此任何新值都将具有任意索引。 这意味着函数可以按任意顺序返回值。

lpValueName [out]

指向缓冲区的指针,该缓冲区接收以 null 结尾的字符串形式的值的名称。 此缓冲区必须足够大,才能包含终止 null 字符。

有关详细信息,请参阅 注册表元素大小限制

lpcValueName [in, out]

指向变量的指针,该变量指定 lpValueName 参数指向的缓冲区的大小(以字符为单位)。 函数返回时,变量接收缓冲区中存储的字符数,不包括终止 null 字符。

lpType [out, 可选]

指向变量的指针,该变量接收指示存储在指定值中的数据类型的代码。 有关可能的类型代码的列表,请参阅 注册表值类型。 如果不需要类型代码, lpType 参数可以为 NULL

lpData [out, 可选]

指向接收值条目数据的缓冲区的指针。 如果不需要数据,此参数可以为 NULL

如果 lpDataNULLldata 为非 NULL,则该函数会将数据的大小(以字节为单位)存储在 ldata 指向的变量中。 这使应用程序能够确定为数据分配缓冲区的最佳方式。

lpcbData [in, out, optional]

指向变量的指针,该变量指定 lpData 参数指向的缓冲区的大小(以字节为单位)。 函数返回时,变量接收存储在缓冲区中的字节数。

仅当 lpDataNULL 时,此参数才能为 NULL

如果数据具有REG_SZ、REG_MULTI_SZ或REG_EXPAND_SZ类型,则此大小包括任何终止 null 字符或字符。 有关详细信息,请参阅“备注”。

如果 lpData 指定的缓冲区不够大,无法保存数据,则函数将返回ERROR_MORE_DATA并将所需的缓冲区大小存储在 l ERROR_MORE_DATA指向的变量中。 在这种情况下, lpData 的内容未定义。

返回值

如果函数成功,则返回值为 ERROR_SUCCESS。

如果函数失败,则返回值为 Winerror.h 中定义的非零错误代码。 可以将 FormatMessage 函数与 FORMAT_MESSAGE_FROM_SYSTEM 标志一起使用,以获取错误的泛型说明。

如果 lpData 缓冲区太小而无法接收值,则函数将返回ERROR_MORE_DATA。

备注

若要枚举值,应用程序最初应调用 OREnumValue 函数,并将 dwIndex 参数设置为零。 然后,应用程序应递增 dwIndex 并调用 OREnumValue 函数,直到 (没有更多值,直到函数返回ERROR_NO_MORE_ITEMS) 。

应用程序还可以在首次调用函数时将 dwIndex 设置为最后一个值的索引,并递减索引,直到枚举索引为 0 的值。 若要检索最后一个值的索引,请使用 ORQueryInfoKey 函数。

使用 OREnumValue 时,应用程序不应调用任何可能会更改所查询的密钥的脱机注册表函数。

如果数据具有REG_SZ、REG_MULTI_SZ或REG_EXPAND_SZ类型,则字符串可能未使用正确的 null 终止字符进行存储。 因此,即使函数返回ERROR_SUCCESS,应用程序也应该确保字符串在使用前正确终止;否则,它可能会覆盖缓冲区。 (请注意,REG_MULTI_SZ字符串应具有两个 null 终止字符。)

若要确定名称和数据缓冲区的最大大小,请使用 ORQueryInfoKey 函数。

要求

要求
可再发行组件
Windows 脱机注册表库版本 1.0 或更高版本
标头
Offreg.h
DLL
Offreg.dll

另请参阅

ORCreateKey

OREnumKey

OROpenKey

ORQueryInfoKey