我正在尝试使用c-function CreateFile与USB打印机通信,因此我需要设备路径。我知道我可以通过SetupDiEnumDeviceInterfaces和SetupDiGetDeviceInterfaceDetail获取设备路径,但是对于SetupDiEnumDeviceInterfaces,我需要将InterfaceClassGuid作为第三个参数,我不知道。
我目前的做法是:
唯一缺少的是在拥有SP_DEVINFO_DATA时获取设备接口(SP_DEVICE_INTERFACE_DATA)。另一种方式很简单:拥有SP_DEVICE_INTERFACE_DATA,我可以调用SetupDiGetDeviceInterfaceDetail,所以基本上我正在寻找SetupDiGetDeviceInterfaceDetail的相反功能。
如果可以在不必知道InterfaceClassGuid的情况下枚举所有接口,我可以遍历接口列表并查找指向我的设备的接口,但不幸的是,这是不可能的。
以下文章对我的方式非常有帮助: Figuring which printer name corresponds to which device ID和 http://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/51449be7-a4fa-476b-8cd2-b8933bfa3294/enumerate-multifunction-printer-in-vc?forum=wdk
我错过了什么吗?
答案 0 :(得分:0)
已经有一段时间了,所以我想你已经找到了答案。无论如何,对于可能稍后会发现此问题的人,我会回答它。我相信答案是调用SetupDiEnumDeviceInterfaces传递SP_DEVINFO_DATA作为第二个参数。来自文档:
指向SP_DEVINFO_DATA的指针 用于指定设备信息元素的结构 DeviceInfoSet。 此参数是可选的,可以为NULL。如果这个参数是 指定,SetupDiEnumDeviceInterfaces将枚举限制为 指定设备支持的接口。如果这 参数为NULL,重复调用SetupDiEnumDeviceInterfaces 返回有关与all关联的接口的信息 DeviceInfoSet中的设备信息元素。这个指针是 通常由SetupDiEnumDeviceInfo返回。