有多种方法可以检索HID设备的Windows“设备名称”,GetRawInputDeviceInfo,其中RIDI_DEVICENAME是一种方法。
给出示例名称:
?\ \ HID#VID_FEED&安培; PID_DEAD#6和; 3559c8ea&安培0安培; 0000#{378de44c-56ef-11D1-bc8c-00a0c91405dd}
我想知道这个字符串中的内容是否有任何文档?
?\ \ HID#VID_AAAA&安培; PID_BBBB#C&安培; DDDDDD急症&安培; FFFF#{GUID}
所以显而易见的是A(VID),B(PID)和最后的GUID。我想知道的是C,D,E和F究竟是什么?
C和D似乎是独一无二的,即使你插入了两个完全相同的HID设备,这对我的问题很有帮助,但如果我能确切地知道在每个操作系统上如何确定这一点,我会感觉更舒服基础,或至少它遵循一些已知的格式。
我一直在谷歌搜索疯子试图解决这个问题,我错过了一些明显的东西吗?
提前致谢
答案 0 :(得分:4)
根据similar MSDN post,该值表示唯一的设备实例ID:
设备实例ID是唯一且物理上不变的 设备插入的位置,但它也是不透明的 不被解析。这意味着它可以用于字符串比较,但是 不是为了解释。
答案 1 :(得分:0)
它实际上是device interface instance id(符号链接名称)。是的,它是唯一的,并且在系统重新启动后仍然存在。一些细节也here。
您可以将CM_Get_Device_Interface_Property
或SetupDiGetDeviceInterfaceProperty
与DEVPKEY_Device_InstanceId
一起使用以获取设备实例ID(一个设备可以具有多个接口)。
在您的示例中-您具有HID设备。其设备ID格式描述为here。
有关通用USB设备ID格式的信息为here。
获得设备实例ID后,可以将CM_Get_DevNode_Property
或SetupDiGetDeviceProperty
与DEVPKEY_NAME
一起使用以获取设备的本地化友好名称(在设备管理器中显示)。
总结:
\\?\HID#VID_203A&PID_FFFC&MI_01#7&2de99099&0&0000#{378de44c-56ef-11d1-bc8c-00a0c91405dd}
-是device interface id HID\VID_203A&PID_FFFC&MI_01\7&2de99099&0&0000
-是device instance id