SetupDiCreateDevRegKeyA 函数 (setupapi.h)
SetupDiCreateDevRegKey 函数为特定于设备的配置信息创建注册表项,并返回密钥的句柄。
语法
WINSETUPAPI HKEY SetupDiCreateDevRegKeyA(
[in] HDEVINFO DeviceInfoSet,
[in] PSP_DEVINFO_DATA DeviceInfoData,
[in] DWORD Scope,
[in] DWORD HwProfile,
[in] DWORD KeyType,
[in, optional] HINF InfHandle,
[in, optional] PCSTR InfSectionName
);
参数
[in] DeviceInfoSet
设备信息的句柄集,其中包含表示要为其创建注册表项的设备的设备信息元素。
[in] DeviceInfoData
指向 SP_DEVINFO_DATA 结构的指针,该结构指定 DeviceInfoSet中的设备信息元素。
[in] Scope
要创建的注册表项的范围。 范围确定信息的存储位置。 创建的密钥可以是全局密钥,也可以特定于硬件配置文件。 可以是以下值之一:
DICS_FLAG_GLOBAL
创建用于存储全局配置信息的密钥。 此信息不特定于特定硬件配置文件。 在基于 NT 的操作系统上,这将创建一个根植于 HKEY_LOCAL_MACHINE的密钥。 打开的确切键取决于 KeyType 参数的值。
DICS_FLAG_CONFIGSPECIFIC
创建密钥以存储特定于硬件配置文件的配置信息。 此密钥植根于硬件配置文件特定的分支之一,而不是 HKEY_LOCAL_MACHINE。
[in] HwProfile
如果 HwProfileFlags 设置为SPDICS_FLAG_CONFIGSPECIFIC,则为其创建密钥的硬件配置文件。 如果 HwProfile 为 0,则会创建当前硬件配置文件的密钥。 如果 HwProfileFlags SPDICS_FLAG_GLOBAL,则忽略 HwProfile。
[in] KeyType
要创建的注册表存储密钥的类型。 可以是以下值之一:
DIREG_DEV
为设备创建 硬件密钥。
DIREG_DRV
为设备创建 软件密钥。
[in, optional] InfHandle
打开的 INF 文件的句柄,该文件包含要为新创建的密钥执行 INF DDInstall 节。 此参数是可选的,可以 NULL。 如果指定此参数,还必须指定 InfSectionName。
[in, optional] InfSectionName
InfHandle指定的 INF 文件中的 INF DDInstall 节的名称。 为新创建的密钥执行此部分。 此参数是可选的,可以 NULL。 如果指定此参数,还必须指定 InfHandle。
返回值
如果 SetupDiCreateDevRegKey 成功,该函数将返回指定注册表项的句柄,在该注册表项中可以存储和检索特定于设备的配置数据。 如果 SetupDiCreateDevRegKey 失败,该函数将返回INVALID_HANDLE_VALUE。 调用 GetLastError 以获取扩展的错误信息。
言论
SetupDiCreateDevRegKey 的调用方必须是 Administrators 组的成员。
通过调用 RegCloseKey,关闭从 SetupDiCreateDevRegKey 返回的句柄。
如果指定的键已存在,SetupDiCreateDevRegKey 返回该键的句柄。 否则,SetupDiCreateDevRegKey 创建指定的键并返回新密钥的句柄。 对于 Windows Server 2003 及更高版本的 Windows,密钥句柄仅具有KEY_READ和KEY_WRITE访问权限。 对于以前的 Windows 版本,此句柄具有KEY_ALL_ACCESS访问权限。
在 调用 SetupDiCreateDevRegKey 之前,必须先注册指定的设备实例。 但是,请注意,操作系统会自动注册 PnP 设备实例。 有关如何注册非 PnP 设备实例的信息,请参阅 SetupDiRegisterDeviceInfo。
对于使用布局文件(由 LayoutFile 条目在 INF 版本部分中指定的安装),必须通过调用 SetupOpenAppendInfFile(Microsoft Windows SDK 文档中所述)来打开布局文件,然后调用 setupDiCreateDevRegKey。
如果提供的设备信息集包含远程系统的设备信息元素,并且还指定了 InfHandle 和 InfSectionName,则创建请求将失败,后续调用 GetLastError 将返回ERROR_REMOTE_REQUEST_UNSUPPORTED。
注意
setupapi.h 标头将 SetupDiCreateDevRegKey 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Microsoft Windows 2000 及更高版本的 Windows 中可用。 |
目标平台 | 桌面 |
标头 | setupapi.h (包括 Setupapi.h) |
库 | Setupapi.lib |