Windows HID设备名称格式

Windows HID设备名称格式,windows,device,hid,Windows,Device,Hid,有多种方法可以检索HID设备的Windows“设备名称”,其中RIDI_DEVICENAME是一种方法 给定示例名称: \?\HID#参阅FEED和PID#死亡#6和3559c8ea和0和0000#{378de44c-56ef-11d1-bc8c-00a0c91405dd} 我想知道是否有任何关于这个字符串中的内容的文档 \?\HID#VID#u AAAA&PID#BBBB#C&DDDDDD&E&FFFF#{GUID} 因此,最明显的是A(VID)、B(PID)和末尾的GUID。我想知道的是C,

有多种方法可以检索HID设备的Windows“设备名称”,其中RIDI_DEVICENAME是一种方法

给定示例名称:

\?\HID#参阅FEED和PID#死亡#6和3559c8ea和0和0000#{378de44c-56ef-11d1-bc8c-00a0c91405dd}

我想知道是否有任何关于这个字符串中的内容的文档

\?\HID#VID#u AAAA&PID#BBBB#C&DDDDDD&E&FFFF#{GUID}

因此,最明显的是A(VID)、B(PID)和末尾的GUID。我想知道的是C,D,E和F到底是什么

似乎C和D是独一无二的,即使你插入了两个完全相同的HID设备,这对我的问题来说是非常好的,但是如果我能确切地知道这是如何在每个操作系统的基础上确定的,或者至少它遵循一些已知的格式,我会感觉更舒服

我一直像疯子一样在谷歌上搜索,想弄明白这一点,我是否遗漏了一些明显的东西

提前感谢

根据a,该值表示唯一的设备实例ID:

设备实例ID对于物理对象是唯一且恒定的 设备插入的位置,但它也是不透明的,应该 无法解析。这意味着它可以用于字符串比较,但是 不需要解释

它实际上是(符号链接名)。是的,它的独特性和跨系统重启的持久性。还有一些细节

您可以在接口实例id上使用
CM\u Get\u Device\u Interface\u属性
SetupDiGetDeviceInterfaceProperty
DEVPKEY\u Device\u InstanceId
来获取设备实例id(一个设备可以有多个接口)

在您的示例中,您有一个HID设备。描述了它的设备id格式

有关通用USB设备id格式的信息为

拥有设备实例id后,可以使用
CM\u Get\u DevNode\u属性
SetupDiGetDeviceProperty
DEVPKEY\u名称
来获取设备的本地化友好名称(显示在设备管理器中)

总而言之:

  • \?\HID\VID\u 203A&PID\u FFFC&MI\u 01\7&2de99099&0&0000{378de44c-56ef-11d1-bc8c-00a0c91405dd}
    -is(在文档中也称为“设备接口路径”或“设备名称”)。这是虚拟设备文件系统中的路径
  • {378de44c-56ef-11d1-bc8c-00a0c91405dd}
    -(在本例中,它确定可以在此设备上调用哪些IOCTL。在本例中)
  • HID\VID\u 203A&PID\u FFFC&MI\u 01\7&2de99099&0&0000
    -是

注意:未记录确切的
设备接口id
格式,每个设备接口都可以生成所需的文件名。我不建议您解析它-它可以在更高版本的Windows中更改,更好地获得
设备实例id
-它至少是文档。

Re:“似乎C和D是唯一的,即使您插入两个完全相同的HID设备,这对我的问题非常好…”您正试图解决的问题到底是什么?确切的设备名称格式是操作系统实现细节。您不应该从设备名称中解析或提取信息。我试图在每个操作系统的基础上唯一地标识设备及其接口/输出。你说得对,我不应该从设备名称中提取信息,所以我不会。非常有用,谢谢!!这里重要的是“这意味着它可以用于字符串比较,但不能用于解释。”这肯定回答了我的问题。