1. struct usb_device_descriptor {
    __u8 bLength;//设备描述符的字节数大小,为0x12
    __u8 bDescriptorType;//描述符类型编号,为0x01 __le16 bcdUSB;//USB版本号
    __u8 bDeviceClass;//USB分配的设备类代码,0x01~0xfe为标准设备类,0xff为厂商自定义类型 //0x00不是在设备描述符中定义的,如HID
    __u8 bDeviceSubClass;//usb分配的子类代码,同上,值由USB规定和分配的
    __u8 bDeviceProtocol;//USB分配的设备协议代码,同上
    __u8 bMaxPacketSize0;//端点0的最大包的大小
    __le16 idVendor;//厂商编号
    __le16 idProduct;//产品编号
    __le16 bcdDevice;//设备出厂编号
    __u8 iManufacturer;//描述厂商字符串的索引
    __u8 iProduct;//描述产品字符串的索引
    __u8 iSerialNumber;//描述设备序列号字符串的索引
    __u8 bNumConfigurations;//可能的配置数量
    } __attribute__ ((packed)); struct usb_config_descriptor {
    __u8 bLength;//设备描述符的字节数大小,为0x12
    __u8 bDescriptorType;//描述符类型编号,为0x01
    __le16 wTotalLength;//配置所返回的所有数量的大小 __u8 bNumInterfaces;//此配置所支持的接口数量
    __u8 bConfigurationValue;//Set_Configuration命令需要的参数值
    __u8 iConfiguration;//描述该配置的字符串的索引值
    __u8 bmAttributes;//供电模式的选择
    __u8 bMaxPower;//设备从总线提取的最大电流
    } __attribute__ ((packed)); struct usb_interface_descriptor {
    __u8 bLength;//设备描述符的字节数大小,为0x12
    __u8 bDescriptorType;//描述符类型编号,为0x01 __u8 bInterfaceNumber;//接口的编号
    __u8 bAlternateSetting;//备用的接口描述符编号
    __u8 bNumEndpoints;//该接口使用端点数,不包括端点0
    __u8 bInterfaceClass;//接口类型
    __u8 bInterfaceSubClass;//接口子类型
    __u8 bInterfaceProtocol;//接口所遵循的协议
    __u8 iInterface;//描述该接口的字符串索引值
    } __attribute__ ((packed)); struct usb_endpoint_descriptor {
    __u8 bLength;//设备描述符的字节数大小,为0x12
    __u8 bDescriptorType;//描述符类型编号,为0x01 __u8 bEndpointAddress;//端点地址及输入输出属性
    __u8 bmAttributes;//端点的传输类型属性
    __le16 wMaxPacketSize;//端点收、发的最大包的大小
    __u8 bInterval;//主机查询端点的时间间隔 /* NOTE: these two are _only_ in audio endpoints. */
    /* use USB_DT_ENDPOINT*_SIZE in bLength, not sizeof. */
    __u8 bRefresh;
    __u8 bSynchAddress;
    } __attribute__ ((packed)); struct usb_string_descriptor {
    __u8 bLength;//设备描述符的字节数大小,为0x12
    __u8 bDescriptorType;//描述符类型编号,为0x01 __le16 wData[]; /* UTF-16LE encoded */
    } __attribute__ ((packed));

USB descriptor【转】的更多相关文章

  1. USB组合设备 Interface Association Descriptor (IAD)

    Communication Device Class,简称CDCUSB Compound Device,USB复合设备USB Composite Device,USB组合设备 摘要USB复合设备 Co ...

  2. usb驱动开发17之设备生命线

    拜会完了山头的几位大哥,还记得我们从哪里来要到哪里去吗?时刻不能忘记自身的使命啊.我们是从usb_submit_urb()最后的那个遗留问题usb_hcd_submit_urb()函数一路走来,现在就 ...

  3. 『翻译』Access USB Devices on the Web

    https://developers.google.com/web/updates/2016/03/access-usb-devices-on-the-web Access USB Devices o ...

  4. 【转】簡單講講 USB Human Interface Device

    原地址http://213style.blogspot.com/2013/09/usb-human-interface-device.html 恩,發本文的原因是看到了以前畢業的朋友在旁邊的對話框問了 ...

  5. Using a USB host controller security extension for controlling changes in and auditing USB topology

    Protecting computer systems from attacks that attempt to change USB topology and for ensuring that t ...

  6. USB 3.0规范中译本第9章 设备框架

    本文为CoryXie原创译文,转载及有任何问题请联系cory.xie#gmail.com. 设备框架可以被分成三层: 最底层是总线接口层,传送和接收包. 中间层处理在总线接口和设备的各种端点之间路由数 ...

  7. qq2440启动linux后插入u盘出现usb 1-1: device descriptor read/64, error -110,usb 1-1: device not accepting address 8, error -110

    上位机:ubuntu14.04 64bit 下位机:qq2440 交叉编译器:arm-linux-gcc 3.4.1 下位机使用的linux内核版本:kernel2.6.13 1.插入u盘时错误信息如 ...

  8. USB HID Report Descriptor 报告描述符详解

    Report descriptors are composed of pieces of information. Each piece of information is called an Ite ...

  9. 遍历 USB devcie,读取设备描述符 device descriptor【转】

    转自:http://blog.csdn.net/flyyyri/article/details/5480347 理论:    对于USB接口的设备,现在越来越多了.本篇我们就通过获取一个USB扫描仪设 ...

随机推荐

  1. Spring(1):Spring简介

    一句话概括: Spring是一种轻量级控制反转IoC和面向切面AOP的容器框架 初衷: 使用接口编程而不是类 为javabean提供一个更好的应用配置框架 javabean是一种规范而不是技术.是指符 ...

  2. PGM学习之七 MRF,马尔科夫随机场

    之前自己做实验也用过MRF(Markov Random Filed,马尔科夫随机场),基本原理理解,但是很多细节的地方都不求甚解.恰好趁学习PGM的时间,整理一下在机器视觉与图像分析领域的MRF的相关 ...

  3. BZOJ2159 Crash 的文明世界 【第二类斯特林数 + 树形dp】

    题目链接 BZOJ2159 题解 显然不能直接做点分之类的,观察式子中存在式子\(n^k\) 可以考虑到 \[n^k = \sum\limits_{i = 0} \begin{Bmatrix} k \ ...

  4. 2017 3 8 练习赛 t3 路径规划

    题目大意是让你在一棵树上找到一条路径使得(路径边权和*路径最小值) 最大. 这道题有两种方法. 1.点分治,考虑过重心的每条路径是否可能成为答案,枚举从根出发的每一条路径中的最小值等于总路径的最小值, ...

  5. Could not update Activiti database schema: unknown version from database: '5.20.0.1'

    转: Could not update Activiti database schema: unknown version from database: '5.20.0.1' 2017年11月22日 ...

  6. Python 个人的失误记录之str.replace

    1. replace 替换列表中元素的部分内容后返回列表 2018.06.08 错误操作 -- 这样并不能改变改变列表内的元素 data = [', '决不能回复---它'] data[2].repl ...

  7. bzoj 3224

    3224: Tyvj 1728 普通平衡树 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 16656  Solved: 7255[Submit][St ...

  8. Java入门:构造方法

    什么是构造方法 类体中有两大形式的成员,其中一个是成员方法(另一个就是成员变量啦~).成员方法又分两种,一种是普通成员方法,另一种是构造方法(有的资料中也称之为构造函数). 所谓构造方法,就是这个类在 ...

  9. Redis+Sentinel 实现redis集群高可用

    1.sentinel作用及实现原理: https://my.oschina.net/u/172871/blog/596976?p={{currentPage-1}}

  10. 数据科学的完整学习路径—Python版(转载)

    时间 2015-01-29 14:14:11  数盟原文  http://dataunion.org/?p=9805 译者: Allen 从Python菜鸟到Python Kaggler的旅程(译注: ...