struct usb_device_descriptor
--263-->设备类别
--264-->设备子类
--265-->通信协议
--267-->销售商
--268-->产品ID
--272-->序列号
usb_config_descriptor
//include/uapi/linux/usbch9.h
314 struct usb_config_descriptor {
315
__u8 bLength;
316
__u8 bDescriptorType;
317
318
__le16 wTotalLength;
319
__u8 bNumInterfaces;
320
__u8 bConfigurationValue;
321
__u8 iConfiguration;
322
__u8 bmAttributes;
323
__u8 bMaxPower;
324 } __attribute__ ((packed));
usb_interface_descriptor
//include/uapi/linux/usbch9.h
351 struct usb_interface_descriptor {
352
__u8 bLength;
353
__u8 bDescriptorType;
354
355
__u8 bInterfaceNumber;
356
__u8 bAlternateSetting;
357
__u8 bNumEndpoints;
358
__u8 bInterfaceClass;
359
__u8 bInterfaceSubClass;
360
__u8 bInterfaceProtocol;
361
__u8 iInterface;
362 } __attribute__ ((packed));
usb_endpoint_descriptor
//include/uapi/linux/usbch9.h
369 struct usb_endpoint_descriptor {
370
__u8 bLength;
371
__u8 bDescriptorType;
372
373
__u8 bEndpointAddress;
374
__u8 bmAttributes;
375
__le16 wMaxPacketSize;
376
__u8 bInterval;
377
378
/* NOTE: these two are _only_ in audio endpoints. */
379
/* use USB_DT_ENDPOINT*_SIZE in bLength, not sizeof. */
380
__u8 bRefresh;
381
__u8 bSynchAddress;
382 } __attribute__ ((packed));
usb_device
//include/linux/usb.h
510 struct usb_device {
511
int
devnum;
512
char
devpath[
16];
513
u32
route;
522
struct usb_device *parent;
523
struct usb_bus *bus;
524
struct usb_host_endpoint ep0;
526
struct device dev;
528
struct usb_device_descriptor descriptor;
529
struct usb_host_bos *bos;
530
struct usb_host_config *config;
532
struct usb_host_config *actconfig;
557
char *product;
558
char *manufacturer;
559
char *serial;
561
struct list_head filelist;
563
int maxchild;
568
unsigned long active_duration;
569
584 };
struct usb_device
--522-->这个设备的父设备, 通常就是usb塔形结构的上一个节点设备
--523-->所属的总线是usb总线
--526-->这是一个device, 会挂接到相应的链表
--528-->这个软件device结构包含的硬件device对象
--530-->软件device拥有的所有软件config对象, 对应硬件device拥有的所有硬件config
--531-->当下, 这个device正在使用的config
--557-->产品名
--558-->产品制造商
--559-->产品序列号
--561-->在这个设备上打开的usbfs文件的链表节点
--563-->子设备的最大数量
urb_host_config
//include/linux/usb.h
275 struct usb_host_config {
276
struct usb_config_descriptor desc;
278
char *
string;
/* iConfiguration string, if present */
282
struct usb_interface_assoc_descriptor *intf_assoc[USB_MAXIADS];
286
struct usb_interface *interface[USB_MAXINTERFACES];
290
struct usb_interface_cache *intf_cache[USB_MAXINTERFACES];
292
unsigned char *extra;
/* Extra descriptors */
293
int extralen;
294 };