原始博文链接地址:https://www.silabs.com/community/interface/knowledge-base.entry.html/2013/11/21/windows_usb_devicep-aGxD
现整理翻译如下,但鼓励还是看原文好,因为我的英语也很菜o(╥﹏╥)o
What is a Windows USB device path and how is it formatted?
Windows操作系统通过一个“设备路径”来唯一“标识”接入系统中的USB设备/接口。该“设备路径”常常通过使用win32 的API函数 CreatFile()来与USB设备建立通信。
USB Device Path Format
大多数情况下,windows中USB设备路径的格式如下:
\?usb#vid_vvvv&pid_pppp#ssss#{gggggggg-gggg-gggg-gggg-gggggggggggg}
其中:
vvvv是USB厂商ID,由4个十六进制的字符构成。
pppp是USB的产品ID,由4个十六进制的字符构成。
ssss是USB序列号,由n个 字符构成。
gggggggg-gggg-gggg-gggg-gggggggggggg 是设备接口GUID,GUID用于设备对应驱动连接设备应用时使用。GUID通常被指派到驱动或者驱动文件INF中,被应用程序加载相应的设备驱动。
Composite USB Device Path Format For Interfaces
具有多个接口的USB设备的设备路径格式:
\?usb#vid_vvvv&pid_pppp&mi_ii#aaaaaaaaaaaaaaaa#{gggggggg-gggg-gggg-gggg-gggggggggggg}
vvvv是USB厂商ID,由4个十六进制的字符构成。
pppp是USB的产品ID,由4个十六进制的字符构成。
ii是USB接口号。
aaaaaaaaaaaaaaaa是唯一的,由windows基于类似USB物理端口地址或者接口号来生成的字符。
gggggggg-gggg-gggg-gggg-gggggggggggg 是设备接口GUID,GUID用于设备加载驱动时使用。
Unique Device Paths
Windows要求每个USB设备和接口的设备路径都是唯一的。如果两个同时插到机器上的USB设备具有相同的VID/PID/序列号,那么前面描述的USB设备路径格式便无法为这两个设备生成一个唯一的设备路径进行区分。此时,windows将会按照“复合USB设备路径格式”描述的方式来进行生成,当未设置设备序列号时也将使用这种方式进行生成。
Registry Keys Using Device Path Information
The device path is useful for locating the USB device registry keys, where additional settings and information are stored for the device instance. USB device registry keys are stored in the following location:
设备路径可以用来定位USB设备的注册表中的键值,该键值用来存储与设备有关的设置和信息,USB设备注册键值存储在如下位置:
[HKLM/SYSTEM/CurrentControlSet/Enum/ USBVID_vvvv&PID_ppppssss],
Where:
vvvv是USB 厂商ID.
pppp是USB 产品ID.
ssss是USB序列号或 由windows产生的唯一字符
For example, the CP210x VCP drivers stores the COM port number in the Device ParametersPortName registry key as shown in the figure below.
例如,the CP210x VCP驱动存储着COM端口号码 由如下图所示的 设备参数中的 端口名那一栏进行保存。
Finding the Device Path Parameters using Device Manager
厂商ID/产品ID/序列号或者一个由windows唯一产生的字符可以通过设备管理器进行查看,打开USB设备属性并点击详细信息,并在设备性质那个下拉菜单选项中选择“设备实例路径”,本质上是通过使用CreateFile()函数来进行查看的,设备实例路径与标准的设备路径格式有轻微不同。