根据MSDN文档,SetupDiGetClassDevs可以传递一个设备实例ID来获取特定设备的设备信息集:
我的当前解决方法是枚举同一类别的所有设备,并将SetupDiGetDeviceInstanceId的结果与符号名称进行比较,以获取新设备的
我通过解析要仅返回特定设备,请设置DIFCF_DEVICEINTERFACE标志并使用枚举器参数提供设备实例ID。
WM_DEVICECHANGE
消息DBT_DEVICEARRIVAL
事件中的符号名称来获取设备实例ID,并通过将其与SetupDiGetDeviceInstanceId返回的ID进行比较来验证结果。即使传递操作系统提供的设备实例ID也无法正常工作(即,SetupDiGetClassDevs调用失败并显示ERROR_INVALID_PARAMETER
)。我的当前解决方法是枚举同一类别的所有设备,并将SetupDiGetDeviceInstanceId的结果与符号名称进行比较,以获取新设备的
SP_DEVINFO_DATA
结构。但是,根据文档,我不明白为什么需要这样做...
有人成功使用SetupDiGetClassDevs这种方式吗?是否有更好的方法来获取DBT_DEVICEARRIVAL事件中的数据以获取设备的更多信息?