USB2.0规范
+ -

USB 设备描述符

2021-05-09 1016 24
欢迎加入官方QQ群:952873936或联系站长进行技术交流。

设备描述符是USB设备的第一个描述符,每个USB设备都得具有设备描述符,且只能拥有一个。

设描述符符的定义:

windows系统中设描描述符的结构体定义如下:

struct _DEVICE_DESCRIPTOR_STRUCT 
{ 
    BYTE bLength;           //设备描述符的字节数大小,为0x12 
    BYTE bDescriptorType;   //描述符类型编号,为0x01 
    WORD bcdUSB;           //USB版本号 
    BYTE bDeviceClass;   //USB分配的设备类代码,0x01~0xfe为标准设备类,0xff为厂商自定义类型 
                           //0x00不是在设备描述符中定义的,如HID 
     BYTE bDeviceSubClass;   //usb分配的子类代码,同上,值由USB规定和分配的 
     BYTE bDeviceProtocol;     //USB分配的设备协议代码,同上 
     BYTE bMaxPacketSize0;   //端点0的最大包的大小 
     WORD idVendor;           //厂商编号 
     WORD idProduct;         //产品编号 
     WORD bcdDevice;         //设备出厂编号 
     BYTE iManufacturer;     //描述厂商字符串的索引 
     BYTE iProduct;           //描述产品字符串的索引 
     BYTE iSerialNumber;     //描述设备序列号字符串的索引 
     BYTE bNumConfiguration; //可能的配置数量 
}

设备描述符的含义:

  • bLength : 描述符大小.固定为0x12.
  • bDescriptorType : 设备描述符类型.固定为0x01.
  • bcdUSB : USB 规范发布号.表示了本设备能适用于那种协议,如2.0=0200,1.1=0110等.
  • bDeviceClass : 类型代码(由USB指定)。当它的值是0时,表示所有接口在配置描述符里,并且所有接口是独立的。当它的值是1到FEH时,表示不同的接口关联的。当它的值是FFH时,它是厂商自己定义的.
  • bDeviceSubClass : 子类型代码(由USB分配).如果bDeviceClass值是0,一定要设置为0.其它情况就跟据USB-IF组织定义的编码.
  • bDeviceProtocol : 协议代码(由USB分配).如果使用USB-IF组织定义的协议,就需要设置这里的值,否则直接设置为0。如果厂商自己定义的可以设置为FFH.
  • bMaxPacketSize0 : 端点0最大分组大小(只有8,16,32,64有效).
  • idVendor : 供应商ID(由USB分配).
  • idProduct : 产品ID(由厂商分配).由供应商ID和产品ID,就可以让操作系统加载不同的驱动程序.
  • bcdDevice : 设备出产编码.由厂家自行设置.
  • iManufacturer : 厂商描述符字符串索引.索引到对应的字符串描述符. 为0则表示没有.
  • iProduct : :产品描述符字符串索引.同上.
  • iSerialNumber : 设备序列号字符串索引.同上.
  • bNumConfigurations : 可能的配置数.指配置字符串的个数

设备描述符示例

通过windbg查看设描述符
0: kd> dt _USB_DEVICE_DESCRIPTOR 0xffffbe09`51e0be20
xxx!_USB_DEVICE_DESCRIPTOR
 +0x000 bLength          : 0x12 ''
 +0x001 bDescriptorType  : 0x1 ''
 +0x002 bcdUSB           : 0x200
 +0x004 bDeviceClass     : 0 ''
 +0x005 bDeviceSubClass  : 0 ''
 +0x006 bDeviceProtocol  : 0 ''
 +0x007 bMaxPacketSize0  : 0x40 '@'
 +0x008 idVendor         : 0x1234
 +0x00a idProduct        : 0x5678
 +0x00c bcdDevice        : 0
 +0x00e iManufacturer    : 0x19 ''
 +0x00f iProduct         : 0x2a '*'
 +0x010 iSerialNumber    : 0x65 'e'
 +0x011 bNumConfigurations : 0x1 ''   配置数量

使用UsbView获取Logitech鼠标设备描述符

Logitech鼠标设备描述符

0 篇笔记 写笔记

UVC 扩展单元描述符
扩展单元描述符允许硬件设计者定义任意一组控制接口,使类驱动程序可以在设备与供应商提供的主机软件之间进行通讯控制。扩展单元描述符ID由bUnitID字段中的值唯一标识描述符。同一视频功能内的任何其他单元或终端不得具有相同的功能ID。guidExtensionCode字段包含特定于供应商的代码,该代......
USB 设置描述符SetDescriptor
ID请求码说明7SET_DESCRIPTOR修改设备中有关的描述符,或者增加新的描述符SetDescriptoret用于设置USB的描述符,在SetDescriptor请求的数据阶段,主机将向USB设备发送指定的描述符类型 。bmRequestType(1)bRequest(1)wValue(2)w......
USB超高速 超高速端点伴随描述符
在接口中描述的每个超高速端点都紧跟着一个超高速端点伴侣描述符( EndpointCompanion descriptor)。这个描述符包含只给超高速端点定义的附加端点特性。这个描述符总是 作 为 配 置 描 述 符 信 息 的 一 部 分 在GetDescriptor(Configuration) ......
UVC 描述符描述符布局
USB设备的描述符用于向主机报告其设备的属性信息,UVC设备属于USB设备的一种,故和通用的USB设备一样,也包含设备描述符、配置描述符、接口描述符、端点描述符和字符串描述符。UVC设备在也定义了一些特有的描述符,用于对USB视频设备的扩展。这些特有的UVC描述符和通用的USB描述符,共同组成了UV......
USB音响 UAC设备描述符分析
这里看到,USB规范采用的是USB1.1版本,不过字符串中又显示的是”USB2.0 Device”,所以这里就有点迷~关于设备描述符各字段的详细解释,详见USB规范中设备描述符一节。从bDeviceClass,bDeviceSubClass和bDeviceSubClass都被置为0来看,这是一个典型......
USB超高速 精密时间测量描述符
精密时间测量描述符(Precision Time Measurement)应由支持PTM能力的所有集线器和设备实现。OffsetFieldSizeValueDescription0bLength1数字描述符长度1bDescriptorType1常量描述符的类型,这里为DEVICE CAPABILIT......
UVC Windows下UVC摄像头数据分析
这里我们分析一款UVC摄像头来进行数据分析。环境:win10 x64工具:bushound,usbviewer将摄像头插入PC后,打开usbviewr工具,可以看到关于此摄像头的相关信息。可以看到,这个摄像头其实是一个USB复合设备,所以其对应的系统驱动为USBCCGP,然后再由USB复合设备......
UAC 类特定音频控制接口头描述符
UAC类特定音频控制头接口描述符这个名字有点绕,其实这个描述符是前接标准的音频控制接口描述符,后续关于音频控制的所有相关描述符,起着承上起下的作用。当然也可以认为是音频控制相关描述符的前导。这是因为UAC类特定音频控制接口描述符含有一个关键的字段wTotalLength,用于包含音频控制所有接口描述......
UVC的版本区别之处理单元描述符
UVC规范自发布到现在,已经有UVC1.0,UVC1.1和UVC1.5三个版本了。在Windows环境下,支持的最广泛的是UVC1.0,从Win7开始支持UVC1.1,从Win8开始支持UVC1.5.我们常用的UVC摄像头一般为了支持更加广泛的操作系统,一般情况下UVC的固件是UVC1.0,但随着固......
UVC 颜色匹配描述符
颜色匹配描述符是一个可选描述符,这是一个与图像成像时色域相关的参数。对于未压缩的视频格式,必须使用颜色匹配描述符bt709是srgb色域。色域是对一种颜色进行编码的方法,也指一个技术系统能够产生的颜色的总和。在计算机图形处理中,色域是颜色的某个完全的子集。颜色子集最常见的应用是用来精确地代表一种给定......
HID 触摸屏的报表描述符
讲道理,这个触摸屏的报告描述符是我从网上搜索的一段代码,这个触摸屏的报告内容本人也进行了测试。测试是通过本站编写的虚拟触摸屏驱动实现的。0x05, 0x0d, // USAGE_PAGE (Digitizers) 0 0x......
USB音响 UAC配置描述符分析
该USB音箱的配置描述符和普通USB设备描述符结构体一致,并无特别区别。该配置描述符的总长度(包括后续的所有其它描述符)为110字节,这里相对华为耳机的要少了很多,这是因为少了像麦克风和HID。从配置描述符的字段bmAttributes来看,并不支持远程唤醒功能。 --------------......
UVC 选择器单元描述符
选择器单元ID由bUnitID字段中的值唯一标识描述符。同一视频功能内的任何其他单元或终端不得具有相同的功能ID。 UINT8 bLength; UINT8 bDescriptorType; UINT8 bDescriptorSubtype; UINT8 bUnitID; ......
华为UAC耳机 配置描述符
配置描述符的大小其实不光包括配置描述符自身,也包括后续的所有描述符。这里我们只先介绍一下配置描述符,后续的接口描述符和其它UAC相关描述符在后续一节介绍。配置描述符的内容如下: ------------------ Configuration Descriptor --------------......
UVC 接口关联描述符IAD
设备必须使用接口关联描述符来描述需要视频控制接口和一个或多个视频流接口的每个设备功能的视频接口集合。标准的VIC接口关联描述符与接口关联描述符ECN中定义的标准接口关联描述符相同,只是有些字段现在具有专用值。说明:如果视频控制接口是视频接口集合的一部分,则接口关联描述符IAD中的iFunction字......
作者信息
USB中文网
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

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

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