RegQueryMultipleValuesA 函数 (winreg.h)

检索与打开的注册表项关联的值名称列表的类型和数据。

语法

LSTATUS RegQueryMultipleValuesA(
  [in]                HKEY     hKey,
  [out]               PVALENTA val_list,
  [in]                DWORD    num_vals,
  [out, optional]     LPSTR    lpValueBuf,
  [in, out, optional] LPDWORD  ldwTotsize
);

参数

[in] hKey

打开的注册表项的句柄。 密钥必须使用KEY_QUERY_VALUE访问权限打开。 有关详细信息,请参阅

注册表项安全和访问权限

此句柄由 RegCreateKeyExRegCreateKeyTransactedRegOpenKeyExRegOpenKeyTransacted 函数返回。 它也可以是以下 预定义键之一

HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_PERFORMANCE_DATA
HKEY_USERS

[out] val_list

指向 数组的指针

VALENT 描述一个或多个值条目的结构。 在输入时,每个结构的 ve_valuename 成员必须包含指向要检索的值名称的指针。 如果指定键中不存在任何指定值,该函数将失败。

如果函数成功,则数组的每个元素都包含指定值的信息。

[in] num_vals

val_list 数组中的元素数。

[out, optional] lpValueBuf

指向缓冲区的指针。 如果函数成功,缓冲区将接收每个值的数据。

如果 lpValueBufNULL,则 ldwTotsize 参数指向的值必须为零,在这种情况下,函数返回 ERROR_MORE_DATA,ldwTotsize 接收缓冲区所需的大小(以字节为单位)。

[in, out, optional] ldwTotsize

指向变量的指针,该变量指定由 lpValueBuf 参数指向的缓冲区的大小(以字节为单位)。 如果函数成功,ldwTotsize 接收复制到缓冲区的字节数。 如果函数由于缓冲区太小而失败,ldwTotsize 接收所需的大小(以字节为单位)。

返回值

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

如果函数失败,则返回值为以下错误代码之一。

返回代码 描述
ERROR_CANTREAD

RegQueryMultipleValues 无法实例化或访问动态密钥的提供程序。

ERROR_MORE_DATA
lpValueBuf 指向的缓冲区太小。 在这种情况下,ldwTotsize 接收所需的缓冲区大小。
ERROR_TRANSFER_TOO_LONG
请求的数据的总大小(val_list 数组的大小 + ldwTotSize)大于一兆字节的系统限制。

言论

RegQueryMultipleValues 函数允许应用程序查询静态或动态键的一个或多个值。 如果目标键是静态键,则系统以原子方式提供所有值。 为防止过度序列化,函数返回的聚合数据不能超过一兆字节。

如果目标键是动态键,则其提供程序必须以原子方式提供所有值。 这意味着提供程序应同步填充结果缓冲区,同时提供缓冲区中所有值的一致视图,同时避免过度序列化。 在对此函数进行原子调用期间,提供程序最多可以提供一兆字节的总输出数据。

远程支持 RegQueryMultipleValues;也就是说,传递给函数的 hKey 参数可以引用远程计算机。

注意

winreg.h 标头将 RegQueryMultipleValues 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

要求 价值
最低支持的客户端 Windows 2000 Professional [仅限桌面应用]
支持的最低服务器 Windows 2000 Server [仅限桌面应用]
目标平台 窗户
标头 winreg.h (包括 Windows.h)
Advapi32.lib
DLL Advapi32.dll

另请参阅

注册表函数

注册表概述

VALENT