什么是Windows USB设备路径,它是如何格式化的?

 

什么是Windows USB设备路径,它是如何格式化的?




 

Windows操作系统依靠唯一的设备路径来唯一标识连接到系统的每个USB设备/接口。设备路径字符串用于与USB设备通信,并传递给CreateFile()Win32 API函数。


USB设备路径格式


在大多数情况下,Windows格式化USB设备路径,如下所示:


\?usb#vid_ vvvv&pid_ ppppssss#{ gggggggg-gggg-gggg-gggg-gggggggggggg }


其中:
vvvv是以4个十六进制字符表示的USB供应商ID。
pppp是以4个十六进制字符表示的USB产品ID。
ssss是以n个字符表示的USB串行字符串。
gggggggg-gggg-gggg-gggg-ggggggggggg是用于将应用程序链接到设备的设备接口GUID,其中加载了特定的驱动程序。


CP210x VCP驱动程序GUID是:


A2A39220-39F4-4b88-AECB-3D86A35DC748 }


GUID在驱动程序或驱动程序INF文件中分配,并由应用程序用于过滤已加载该驱动程序的设备。


用于接口的复合USB设备路径格式


对于具有多个接口的复合设备,每个接口的设备路径可能如下所示:


\?usb#vid_ vvvv&pid_ pppp&mi_ iiaaaaaaaaaaaaaaaa#{ gggggggg-gggg-gggg-gggg-gggggggggggg }


其中:
vvvv是以4个十六进制字符表示的USB供应商ID。
pppp是以4个十六进制字符表示的USB产品ID。
ii是USB接口编号。
aaaaaaaaaaaaaaaa是基于物理USB端口地址和/或接口号的特殊Windows生成的字符串。
gggggggg-gggg-gggg-gggg-ggggggggggg是用于将应用程序链接到设备的设备接口GUID,其中加载了特定的驱动程序。


唯一设备路径


Windows要求设备路径对于每个USB设备和接口都是唯一的。如果两个USB设备插入到具有相同VID / PID /串行字符串的同一机器中,则上述USB设备路径格式将不会为两个设备生成唯一的字符串。在这种情况下,Windows会生成与复合USB设备路径格式部分中描述的格式相似的唯一字符串如果USB设备iSerial索引设置为0,则表示该设备没有串行字符串,也会使用此方法。


使用设备路径信息的注册表项


设备路径对于定位USB设备注册表项很有用,其中存储了设备实例的其他设置和信息。USB设备注册表项存储在以下位置:


[HKLMSYSTEMCurrentControlSetEnumUSBVID_ VVVV&PID_ PPPP SSSS ]


其中:
vvvv是USB供应商ID。
pppp是USB产品ID。
ssss是USB串行字符串或唯一的Windows生成字符串。


例如,CP210x VCP驱动程序将COM端口号存储在Device ParametersPortName注册表项中,如下图所示。



使用设备管理器查找设备路径参数


可以使用设备管理器获取供应商ID,产品ID,串行字符串或唯一字符串。打开USB设备的属性,然后单击“详细信息”选项卡。从组合框中选择“设备实例路径”属性,显示设备实例路径,该路径共享用于CreateFile()的设备路径的组件。设备实例路径的格式略有不同,如下图所示。


 

你可能感兴趣的:(什么是Windows USB设备路径,它是如何格式化的?)