SetupDiOpenDeviceInfoA 函数 (setupapi.h)

SetupDiOpenDeviceInfo 函数将设备实例的设备信息元素添加到设备信息集中,如果设备信息集中尚不存在设备信息元素,并检索用于标识设备信息集中设备实例的设备信息元素的信息。

语法

WINSETUPAPI BOOL SetupDiOpenDeviceInfoA(
  [in]            HDEVINFO         DeviceInfoSet,
  [in]            PCSTR            DeviceInstanceId,
  [in, optional]  HWND             hwndParent,
  [in]            DWORD            OpenFlags,
  [out, optional] PSP_DEVINFO_DATA DeviceInfoData
);

参数

[in] DeviceInfoSet

设备信息集 句柄,SetupDiOpenDeviceInfoDeviceInstanceId指定的设备实例添加设备信息元素(如果尚不存在)。

[in] DeviceInstanceId

指向提供设备设备实例标识符(例如“Root*PNP0500\0000”)的 NULL 终止字符串的指针。 如果 DeviceInstanceIdNULL 或引用零长度字符串,SetupDiOpenDeviceInfo 为设备树中根设备添加设备信息元素(如果尚不存在)。

[in, optional] hwndParent

用于安装设备的任何用户界面的顶级窗口的句柄。

[in] OpenFlags

DWORD 类型的变量,用于控制设备信息元素的打开方式。 此参数的值可以是以下一个或多个:

DIOD_CANCEL_REMOVE

如果指定了此标志并且设备已标记为待删除,则操作系统将取消挂起的删除。

DIOD_INHERIT_CLASSDRVS

如果指定了此标志,生成的设备信息元素将继承与设备信息集关联的类驱动程序列表(如果有)。 此外,如果为设备信息集选择了一个驱动程序,则为新设备信息元素选择了同一驱动程序。

如果设备信息元素已存在,则其类驱动程序列表(如果有)将替换为继承的列表。

[out, optional] DeviceInfoData

指向调用方提供的 SP_DEVINFO_DATA 结构的指针,该结构接收由 DeviceInstanceId指定的设备实例的设备信息元素的相关信息。 调用方必须将 cbSize 设置为 sizeof(SP_DEVINFO_DATA。 此参数是可选的,可以 NULL

返回值

SetupDiOpenDeviceInfo 如果成功,则返回 true。 否则,函数返回 FALSE,可以通过调用 getLastError来检索记录的错误。

言论

如果将此设备实例添加到具有关联类的集,则设备类必须相同,否则调用将失败。 在这种情况下,对 getLastError 调用将返回ERROR_CLASS_MISMATCH。

如果新设备信息元素已成功打开,但调用方提供的 DeviceInfoData 缓冲区无效,则此函数返回 FALSE。 在这种情况下,调用 getLastError 将返回ERROR_INVALID_USER_BUFFER。 但是,无论如何,设备信息元素将添加为集的新成员。

注意

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

要求

要求 价值
最低支持的客户端 Microsoft Windows 2000 及更高版本的 Windows 中可用。
目标平台 桌面
标头 setupapi.h (包括 Setupapi.h)
Setupapi.lib

另请参阅

SP_DEVINFO_DATA

SetupDiCreateDeviceInfo

SetupDiDeleteDeviceInfo

SetupDiEnumDeviceInfo