我正在尝试打开属于复合设备一部分的 WinUSB 设备。我已使用 cfgmgr32 找到了正确的子设备,并有其 DEVINST 编号。为了使用 WinUSB 打开它,我需要首先调用 CreateFile,为此我需要设备路径。
设备路径如下所示:
\\\\?\\usb#vid_9999&pid_0102#3555303335351909000b0#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
如何获取设备路径?
我建议看看从_devinst_and_guid 获取文件名函数是libusbp.
基本轮廓是:
- 确保您知道要查找的设备接口 GUID。这是您提供的文件名末尾括号中的内容。这通常来自设置 WinUSB 的 INF 文件,但也可以来自设备上的 MS 操作系统描述符。您可以在注册表中找到它。你必须将它打包成 Win32 API
GUID
struct.
- Call
SetupDiGetClassDevs(guid, NULL, NULL, DIGCF_DEVICEINTERFACE | DIGCF_PRESENT);
获取支持该设备接口 GUID 的所有当前(已连接)设备的列表。
- Use
SetupDiEnumDeviceInfo
迭代列表,直到找到与已找到的 DEVINST 匹配的项目。
- Use
SetupDiEnumDeviceInterfaces
获取该项目的接口列表。应该只有一项,因为您已经指定了您感兴趣的设备接口 GUID。
- Use
SetupDiGetDeviceInterfaceDetail
to get SP_DEVICE_INTERFACE_DETAIL_DATA_A
数据结构。
- 您要查找的文件名位于
DevicePath
该结构的成员。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)