您现在的位置是:主页 > USB百科 >
USB设备硬件ID和兼容ID的生成规则介绍
发布时间:2022-11-15 16:52:17所属栏目:USB百科 已帮助人编辑作者:【USB接口百科】
USB设备在插入电脑后,会触发一系列的操作,详见Windows下USB设备的枚举过程分析:https://www.usbzh.com/article/detail-420.html
当然这里更多是站在硬件或者USB层面来讲的,但是USB设备与驱动是怎么绑定的呢?
这里得先介绍一个概念叫做硬件ID和兼容ID.
我们在电脑中找一个USB设备,在设备管理器中查看其设备属性可以看到:
USB设备的硬件ID的生成规则:
swprintf(Buffer, L"USB\\VID_%04X&PID_%04X&REV_%04X",
FDODeviceExtension->MicParameter.VenderID,
FDODeviceExtension->MicParameter.ProductID,
FDODeviceExtension->MicParameter.VersionId);
可以看到VID,PID 和VER分别对应的是设备描述符中的厂商ID,产品ID和BCDDevice.
其实对于一些复合设备的,如以接口复合的设备,对其使用usbccgp.sys来驱动的话,其硬件ID会多一个MI_XX,这个XX其实代表的是其设备功能的接口描述符的ID,如:
这里的MI_00代表的接口描述符的bInterfaceNumber。
还有一种是HID独有的COL_XX,代表着HID设备的一个报告描述符中解析出了多个设备,如我们可以把键盘和鼠标的报告描述符合成一个报告描述符,那么HID设备会生成2个设备,一个是键盘,一个是鼠标,那么其COL分别为COL_01,COL_02,如如下的设备:
其硬件ID分别为:
这个我们看REACTOS关于HIDCLASS.SYS的驱动的时候就可以看到:
if (PDODeviceExtension->Common.DeviceDescription.CollectionDescLength > 1)
{
//
// multi-tlc device
//
Offset = swprintf(&Buffer[Offset], L"HID\\Vid_%04x&Pid_%04x&Rev_%04x&Col%02x", PDODeviceExtension->Common.Attributes.VendorID, PDODeviceExtension->Common.Attributes.ProductID, PDODeviceExtension->Common.Attributes.VersionNumber, PDODeviceExtension->CollectionNumber) + 1;
Offset += swprintf(&Buffer[Offset], L"HID\\Vid_%04x&Pid_%04x&Col%02x", PDODeviceExtension->Common.Attributes.VendorID, PDODeviceExtension->Common.Attributes.ProductID, PDODeviceExtension->CollectionNumber) + 1;
}
else
{
//
// single tlc device
//
Offset = swprintf(&Buffer[Offset], L"HID\\Vid_%04x&Pid_%04x&Rev_%04x", PDODeviceExtension->Common.Attributes.VendorID, PDODeviceExtension->Common.Attributes.ProductID, PDODeviceExtension->Common.Attributes.VersionNumber) + 1;
Offset += swprintf(&Buffer[Offset], L"HID\\Vid_%04x&Pid_%04x", PDODeviceExtension->Common.Attributes.VendorID, PDODeviceExtension->Common.Attributes.ProductID) + 1;
}
USB设备兼容ID不过我们在电脑中看到大部分的设备其实是免驱动,这是因为他们用了兼容ID的原因。满足某一类规范的设备可以使用其类驱动,这样就可以不关注PID,VID这些东西了。
如视频类的为0x0e,其兼容ID为:
而HID类的必须就是03的了,至于这个编号的规范那就是usbif定义的了,可以参见 USB设备类型定义 https://www.usbzh.com/article/detail-221.html
USB的VendorID、ProductID和BcdDevice有什么作用 https://www.usbzh.com/article/detail-845.html
以上就是USB接口百科为您提供USB设备硬件ID和兼容ID的生成规则介绍的解读,本文章链接: http://www.usb-hub.cn/usbbk/42141.html 欢迎分享转载,更多婚礼相关资讯请前往USB百科
上一篇:各版本USB接口和雷电(Thunderbolt)接口的速度
下一篇:没有了
相关文章
USB接口百科推荐
USB与其它总线相比的优点是什么
USB2.0一定支持高速模式吗?
USB 配对/伴随端口(Companion Port)
同样的soc板子用的同一个USB驱动设备名称,厂商和产品ID都一样,使用什么方法
DisplayLink简介 USB显示技术
USB设备的枚举过程分析
Windows下USB堆栈如何枚举USB设备
USB设备和USB集线器HUB的数据传输
USB3.0传输速度是多少?
USB的连接模型
USB设备类bDeviceClass、bDeviceSubClass、bDeviceProtocol
USB的VendorID、ProductID和BcdDevice有什么作用
USB3.0和USB2.0有什么区别
USB通信设备类CDC简介
USB规范分类大全和USB协议关系树