USB百科
+ -

USB的VendorID、ProductID和BcdDevice有什么作用

2022-03-11 4645 3
  • Vendor ID(VID)的商用需要向USB组织申请,开发者可直接使用开发平台的厂商ID。
  • Product ID(PID)由厂商自行管理。VID和PID的作用是让主机快速识别某些著名的设备(Windows可以在完成枚举之前依此直接派发驱动),它们也常常作为搜索从机的条件(如libusb)。
  • BcdDevice:用于标识USB当前产品的固件版本号,在Windows中生成的硬件ID中,其实就是REV,如
    USB\VID_12D1&PID_3A07&REV_0024
    

一个USB设备的VID和PID在USB设备描述符中指定,通过wIdVendor和wIdProduct指定。

#pragma data_alignment=1    //对齐方式为Byte
typedef struct _USB_Desc_Device_t {
    uint8_t   bLength;                  // 固定值18B
    uint8_t   bDescriptorType;          // 固定值Device(0x01)
    uint16_t  wBcdUSB;                  // USB Spec版本
    uint8_t   bDeviceClass;             // 设备类型
    uint8_t   bDeviceSubClass;          // 设备子类型
    uint8_t   bDeviceProtocol;          // 协议类型
    uint8_t   bMaxPacketSize0;           // EP0的最大包长度
    uint16_t  wIdVendor;                // 厂商ID
    uint16_t  wIdProduct;               // 产品ID
    uint16_t  wBcdDevice;               // 设备软件版本
    uint8_t   bStringIndexManufacturer; // 厂商名称字符串索引号
    uint8_t   bStringIndexProduct;      // 产品名称字符串索引号
    uint8_t   bStringIndexSerialNumber; // 序列号索字符串引号
    uint8_t   bNumConfigurations        // 配置数量>=1
}USB_Desc_Device_t;

大部分USB设备都是标准的兼容设备,如UVC摄像头,HID键盘等,都是使用USB设备分类的bDeviceClass、bDeviceSubClass和bDeviceProtocol生成的兼容ID进行驱动匹配的,Windows中提供了大量的兼容驱动。
对于使用自定义分类的bDeviceClass的设备,系统可能会因为无法找到驱动而并成未知设备,这时需要开发相应的USB设备驱动,这时可以使用由VendorID、ProductID和BcdDevice给成的硬件ID来进行匹配。

[Standard.NT$ARCH$]
%DeviceDesc%=UsbzhDevice, USB\VID_0A39&PID_0001&REV_0100;
%DeviceDesc%=UsbzhDevice, USB\VID_0A39&PID_0002;

相关文档

HID人机交互QQ群:564808376    UAC音频QQ群:218581009    UVC相机QQ群:331552032    BOT&UASP大容量存储QQ群:258159197    STC-USB单片机QQ群:315457461    USB技术交流QQ群2:580684376    USB技术交流QQ群:952873936   

0 篇笔记 写笔记

USB VendorID/VID大全
USB VendorID是需要向USBIF组织申请或购买的,所以拿到一个USB设备,通过其VendorID就可以知道其USB芯片的生产厂家。USBIF官方组织每一季度会更新一次有效的厂商ID,厂商ID以十进制显示,左侧为公司英文名称,右侧为厂商ID十进制值。从当前的数据来看,VendorID发放了......
UVC等时传输中的dwMaxVideoFrameSize和dwMaxPayloadTransferSize关系
在其整个视频流控制接口参数偏移地址18处的字段为一4字节的dwMaxVideoFrameSize,代表的是如果选择当前数据帧格式,其一帧图像的最大数据量大小,以字节为单位。关于dwMaxVideoFrameSize的计算可以参考 YUV2摄像头相关数据大小计算。这里我们主要说一下dwMaxVideo......
UVC批量传输中的dwMaxVideoFrameSize和dwMaxPayloadTransferSize关系
上一节看了UVC等时/同步传输的关系,这里我们介绍一相批量传输。批量传输在这里相对于同步传输要简单的多。uvc_video_start_transfer中的代码如下: else { /* Bulk endpoint, proceed to URB initialization. */ ......
USB2.0 SETUP令牌包
SETUP令牌包用于主机向USB设备发送配置信息SETUP令牌包结构SETUP令牌包格式由8位的包标识字段PID,7位的地址字段ADDR、4位的端点字段和5位的循环字段CRC共24位3字节组成。包标识字段PID:定义了数据传输方向为USB主机到USB设备。ADDR字段:指明了USB设备地址。E......
USB2.0 包位域成员字段-PID、SOP、包地址、包端点、帧号、CRC5、CRC16
包标识PIDUSB协议定义的包格式PID由8位组成,低4位是类型字段,高4位为低四位的补码。特殊用途包包括了一些用于特定场合的信牌包和握手包。PID含义说明0001令牌OUT主机发送数据到USB设备1001令牌IN主机接收从USB设备发出的数据0101......
BUSHOUND抓包stall pid的USTS c0000004错误
对USB设备进行数据分析,使用最多的也就是BUSHOUND了,不过经常遇到一个问题就是 USTS c0000004 stall pid 错误。USTS c0000004 stall pid在本站中搜......
再谈USB摄像头UVC视频流接口控制请求dwMaxVideoFrameSize和dwMaxPayloadTransferSize
刚开始的时候,我们做一件事是认真,一丝不苟。对于各个数据的考量力求做到精度,其实这个追求可能并不是因为我们因为项目上的要求,而是我们为了弄清一个事实,有了这个事实我们就可以随处吹牛逼,也成了我们在做新的类似的项目上的优势之资。言归正转,以前在windows下通过USB总线驱动虚拟的UVC摄像头都只......
USB 同步传输端点的数据包PID序列及额外传输端点大小
对于同步传输:如果输入端点提供的负载数据小于端点描述符指定的最大负载数据,则主机端将不再该端点提供进一步的输入事务。这是因为所对USB设备来说,所有的数据传输都是由主机发起的。对于数据输入IN事务,虽然数据的传输方向为设备端到主机,但是该事务却是由主机发起。由于设备的输入端点提供的负载数据小于该......
USB2.0 控制传输数据包PID序列
USB数据包的PID序列指的不是数据包的PID序列,特指DATA0,DATA1,DATA2和MDATA的PID序列,即USB在数据传输过程中这些数据包的顺序。USB的数据传输分为四种,分别为控制传输、同步传输、批量传输和中断传输。这四种数据传输方式除过控制传输,其余数据的传输过程都是通过IN事务或者......
USB2.0 中断传输和批量传输数据包的PID序列
其实在Windows下开发USB驱动时,USB的数据传输模式只有三种模式:多种控制传输方式同步传输方式批量或中断传输方式这一点在URB的结构体上表现的很清楚. struct _URB_CONTROL_TRANSFER UrbControlTransfer; struct _UR......
USB2.0全速设备使用逻辑分析仪抓取IN令牌包分析SOP/SYNC/PID/EOP
发在B站上的录制的视频 2.USB2.0包Packet的组成-SOP SYNC EOP的解析其中下面有一条评论,询问 站长,也就是说SOP/SYNC/EOP是物理层的,用分析仪都抓不到是吧?这个我在下面也回答了,是可以抓取到的,只不过对于我们进行包分析,意义不大,因为我们的关注点已经不在那里了。刚......
USB2.0 同步传输数据包PID序列
同步传输方式分为全速模式和高速模式,低速模式不存在同步传输。全速传输模式下的数据包PID序列全速模式下的同步传输数据方式只使用DATA0包,因此接收方在接收数据时只会收到DATA0数据包。高速传输模式下的数据包PID序列高速模式下的数据包序列根据一个微帧中的事务个数不同,采用不同的数据包序列,使......
UVC视频控制接口(VideoControl Interface)
UVC视频控制接口(VideoControl Interface)控制视频设备的功能行为。它由USB标准描述符和UVC特定类的描述符来描述。Standard VC interface descriptor标识接口编号和设备类别,并提供属于该接口的端点数。此接口通过默认端点0使用UVC特定类请求实现......
UVC视频流接口(VideoStreaming Interface)
UVC视频流接口(VideoStreaming Interface)用于在 Host 和 Video 设备之间传输视频数据流。 每个接口可以有一个同步或批量数据端点。 支持同步视频传输的接口必须具有备用或转换接口,使主机能够根据带宽要求更改同步管道。 还必须提供零带宽备用设置作为默认备用设置(备用设......
USB的VendorID、ProductID和BcdDevice有什么作用
Vendor ID(VID)的商用需要向USB组织申请,开发者可直接使用开发平台的厂商ID。Product ID(PID)由厂商自行管理。VIDPID的作用是让主机快速识别某些著名的设备(Windows可以在完成枚举之前依此直接派发驱动),它们也常常作为搜索从机的条件(如libusb)。BcdD......
关注公众号
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!