SetupDiCreateDeviceInfoW 函数 (setupapi.h)
SetupDiCreateDeviceInfo 函数创建新的设备信息元素,并将其作为新成员添加到指定的设备信息集。
语法
WINSETUPAPI BOOL SetupDiCreateDeviceInfoW(
[in] HDEVINFO DeviceInfoSet,
[in] PCWSTR DeviceName,
[in] const GUID *ClassGuid,
[in, optional] PCWSTR DeviceDescription,
[in, optional] HWND hwndParent,
[in] DWORD CreationFlags,
[out, optional] PSP_DEVINFO_DATA DeviceInfoData
);
参数
[in] DeviceInfoSet
为本地计算机设置
[in] DeviceName
指向 NULL 终止的字符串的指针,该字符串提供完整的 设备实例 ID(例如,“Root*PNP0500\0000”)或根枚举 设备 ID(例如,“*PNP0500”)。 仅当在 CreationFlags 参数中指定了DICD_GENERATE_ID标志时,才能使用根枚举的设备标识符。
[in] ClassGuid
指向设备的 设备设置类 GUID 的指针。 如果设备设置类未知,请将 *ClassGuid 设置为GUID_NULL结构。
[in, optional] DeviceDescription
指向提供设备文本说明的 NULL 终止字符串的指针。 此指针是可选的,可以 NULL。
[in, optional] hwndParent
用于与安装设备相关的任何用户界面的顶级窗口的句柄。 此句柄是可选的,可以 NULL。
[in] CreationFlags
DWORD 类型的变量,用于控制设备信息元素的创建方式。 可以是以下值的组合:
DICD_GENERATE_ID
如果指定了此标志,DeviceName 仅包含根枚举 设备 ID,并且系统使用该 ID 为新设备信息元素生成完整的 设备实例 ID。
调用 SetupDiGetDeviceInstanceId 以检索为此设备信息元素生成的设备实例 ID。
DICD_INHERIT_CLASSDRVS
如果指定了此标志,生成的设备信息元素将继承与设备信息集关联的类驱动程序列表(如果有)。 此外,如果为设备信息集选择了一个驱动程序,则为新设备信息元素选择了同一驱动程序。
[out, optional] DeviceInfoData
指向接收新设备信息元素的 SP_DEVINFO_DATA 结构的指针。 此指针是可选的,可以 NULL。 如果提供结构,调用方必须在调用函数之前将此结构的 cbSize 成员设置为 sizeof(SP_DEVINFO_DATA)。 有关详细信息,请参阅以下 备注 部分。
返回值
如果函数成功,则返回 TRUE。 否则,它返回 FALSE,可以通过调用 getLastError来检索记录的错误。
言论
此函数的调用方必须是 Administrators 组的成员。
如果将此设备实例添加到具有关联类的集,则设备类必须相同或调用失败。 在这种情况下,对 getLastError
如果指定的设备实例与注册表中的现有设备实例密钥相同,则调用将失败。 在这种情况下,调用 getLastError 将返回ERROR_DEVINST_ALREADY_EXISTS
如果新设备信息元素已成功创建,但调用方提供的 DeviceInfoData 缓冲区无效,该函数将返回 FALSE。 在这种情况下,调用 getLastError 将返回ERROR_INVALID_USER_BUFFER。 但是,设备信息元素已添加为集的新成员。
DeviceInfoSet 必须仅包含本地计算机上的元素。
注意
setupapi.h 标头将 SetupDiCreateDeviceInfo 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Microsoft Windows 2000 及更高版本的 Windows 中可用。 |
目标平台 | 桌面 |
标头 | setupapi.h (包括 Setupapi.h) |
库 | Setupapi.lib |