sheldon_blogs

UAC实例分析-USB音响

  在Android USB之复合设备(gadget)详解一篇中提到了USB Gadget UACUSB Audio Class)的使用。Rockchip 平台可以支持 UAC1(兼容 USB Audio Class specification 1.0)和 UAC2(兼容 USB Audio Class specification 2.0)驱动,这两个驱动都可以支持基础的录音和放音功能。
如果要支持音量调节/静音功能,需要添加另外 HID 的控制。

可以先到https://www.usbzh.com/article/detail-182.html 学习一下对某个USB音箱工作抓包分析。

接下来通过绿联一款USB声卡抓包分析实践:

在设备管理器中USB声卡信息如下图所示,可以看出是UAC复合设备(麦克风,扬声器,HID设备):

 

 在BUSHOUND下如下图所示:

 USB输入设备用于音频的控制,使用的是HID方式,其抓包内容如下:

Bus Hound 6.00 capture on Windows Vista (x64). Complements of www.perisoft.net

1

  Device - Device ID (followed by the endpoint for USB devices)
            (72) USB Audio Device
  Phase  - Phase Type
            CTL   USB control transfer       
            ISOC  Isochronous transfer       
            OUT   Data out transfer          
            RESET bus reset                  
  Data   - Hex dump of the data transferred
  Descr  - Description of the phase
  Cmd... - Position in the captured data


Device  Phase  Data                                                                                                    Description                       Cmd.Phase.Ofs(rep)
------  -----  ------------------------------------------------------------------------------------------------------  --------------------------------  ------------------
  72.0  CTL    21 01 01 02  00 09 02 00                                                                                SET CUR                                  1.1.0        
  72.0  OUT    ff f6                                                                                                   ..                                       1.2.0        
  72.0  CTL    21 01 02 02  00 09 02 00                                                                                SET CUR                                  2.1.0        
  72.0  OUT    ff f6                                                                                                   ..                                       2.2.0        
  72.0  CTL    21 01 01 02  00 09 02 00                                                                                SET CUR                                  3.1.0        
  72.0  OUT    3f f7                                                                                                   ?.                                       3.2.0        
  72.0  CTL    21 01 02 02  00 09 02 00                                                                                SET CUR                                  4.1.0        
  72.0  OUT    3f f7                                                                                                   ?.                                       4.2.0        
  72.0  CTL    21 01 01 02  00 09 02 00                                                                                SET CUR                                  5.1.0        
  72.0  OUT    7d f7                                                                                                   ..                                       5.2.0        
  72.0  CTL    21 01 02 02  00 09 02 00                                                                                SET CUR                                  6.1.0        
  72.0  OUT    7d f7                                                                                                   ..                                       6.2.0        
  72.0  CTL    21 01 01 02  00 09 02 00                                                                                SET CUR                                  7.1.0        
  72.0  OUT    bb f7                                                                                                   ..                                       7.2.0        
  72.0  CTL    21 01 02 02  00 09 02 00                                                                                SET CUR                                  8.1.0        
  72.0  OUT    bb f7                                                                                                   ..                                       8.2.0        
  72.0  CTL    21 01 01 02  00 09 02 00                                                                                SET CUR                                  9.1.0        
  72.0  OUT    f8 f7                                                                                                   ..                                       9.2.0        
  72.0  CTL    21 01 02 02  00 09 02 00                                                                                SET CUR                                 10.1.0        
  72.0  OUT    f8 f7                                                                                                   ..                                      10.2.0        
  72.0  CTL    21 01 01 02  00 09 02 00                                                                                SET CUR                                 11.1.0        
  72.0  OUT    33 f8                                                                                                   3.                                      11.2.0        
  72.0  CTL    21 01 02 02  00 09 02 00                                                                                SET CUR                                 12.1.0        
  72.0  OUT    33 f8                                                                                                   3.                                      12.2.0        
  72.0  CTL    21 01 01 02  00 09 02 00                                                                                SET CUR                                 13.1.0        
  72.0  OUT    6e f8                                                                                                   n.                                      13.2.0        
  72.0  CTL    21 01 02 02  00 09 02 00                                                                                SET CUR                                 14.1.0        
  72.0  OUT    6e f8                                                                                                   n.                                      14.2.0        
  72.0  CTL    21 01 01 02  00 09 02 00                                                                                SET CUR                                 15.1.0        
  72.0  OUT    a8 f8                                                                                                   ..                                      15.2.0        
  72.0  CTL    21 01 02 02  00 09 02 00                                                                                SET CUR                                 16.1.0        
  72.0  OUT    a8 f8                                                                                                   ..                                      16.2.0        
  72.0  CTL    21 01 01 02  00 09 02 00                                                                                SET CUR                                 17.1.0        
  72.0  OUT    e1 f8                                                                                                   ..                                      17.2.0        
  72.0  CTL    21 01 02 02  00 09 02 00                                                                                SET CUR                                 18.1.0        
  72.0  OUT    e1 f8                                                                                                   ..                                      18.2.0        
  72.0  CTL    21 01 01 02  00 09 02 00                                                                                SET CUR                                 19.1.0        
  72.0  OUT    1a f9                                                                                                   ..                                      19.2.0        
  72.0  CTL    21 01 02 02  00 09 02 00                                                                                SET CUR                                 20.1.0        
  72.0  OUT    1a f9                                                                                                   ..                                      20.2.0        
  72.0  CTL    21 01 01 02  00 09 02 00                                                                                SET CUR                                 21.1.0        
  72.0  OUT    51 f9                                                                                                   Q.                                      21.2.0        
  72.0  CTL    21 01 02 02  00 09 02 00                                                                                SET CUR                                 22.1.0        
  72.0  OUT    51 f9                                                                                                   Q.                                      22.2.0        
  72.1  RESET                                                                                                                                                  23.1.0        
  72.1  ISOC   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................................        24.1.0(2)     
  72.1  ISOC   00 00 00 00  00 00 01 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  01 00 01 00  00 00 01 00  ................................        26.1.0        
  72.1  ISOC   93 f6 93 f6  b5 f6 b6 f6  db f6 db f6  02 f7 02 f7  2b f7 2c f7  58 f7 57 f7  87 f7 87 f7  b9 f7 b9 f7  ................+.,.X.W.........        27.1.0        
  72.1  ISOC   25 ec 25 ec  24 ec 23 ec  23 ec 22 ec  24 ec 24 ec  29 ec 28 ec  2e ec 2e ec  36 ec 37 ec  42 ec 41 ec  %.%.$.#.#.".$.$.).(.....6.7.B.A.        28.1.0        
  72.1  ISOC   64 ed 64 ed  4d ed 4c ed  39 ed 38 ed  26 ed 25 ed  13 ed 15 ed  05 ed 04 ed  f7 ec f7 ec  eb ec eb ec  d.d.M.L.9.8.&.%.................        29.1.0        
  72.1  ISOC   60 ef 61 ef  3b ef 3b ef  17 ef 17 ef  f4 ee f5 ee  d4 ee d4 ee  b5 ee b5 ee  98 ee 98 ee  7d ee 7d ee  `.a.;.;.........................        30.1.0        
  72.1  ISOC   36 f1 36 f1  ff f0 ff f0  cb f0 ca f0  97 f0 97 f0  66 f0 66 f0  37 f0 37 f0  08 f0 09 f0  dd ef dd ef  6.6.............f.f.7.7.........        31.1.0        
  72.1  ISOC   34 f4 35 f4  ec f3 eb f3  a6 f3 a6 f3  61 f3 62 f3  1f f3 1f f3  e0 f2 df f2  a1 f2 a1 f2  65 f2 65 f2  4.5.........a.b.............e.e.        32.1.0        
  72.1  ISOC   88 f7 87 f7  2f f7 2f f7  d8 f6 d8 f6  84 f6 83 f6  31 f6 32 f6  e0 f5 e0 f5  92 f5 91 f5  44 f5 44 f5  ...././.........1.2.........D.D.        33.1.0        
  72.1  ISOC   30 fb 30 fb  c8 fa c8 fa  63 fa 63 fa  ff f9 fe f9  9b f9 9c f9  3a f9 3a f9  db f8 da f8  7b f8 7b f8  0.0.....c.c.........:.:.........        34.1.0        
  72.1  ISOC   15 ff 15 ff  a8 fe a7 fe  3d fe 3c fe  d0 fd d0 fd  64 fd 65 fd  fb fc fb fc  93 fc 91 fc  29 fc 29 fc  ........=.<.....d.e.........).).        35.1.0        
  72.1  ISOC   28 03 27 03  bc 02 bd 02  51 02 51 02  e6 01 e6 01  7a 01 7a 01  0f 01 0f 01  a3 00 a3 00  38 00 39 00  (.'.....Q.Q.....z.z.........8.9.        36.1.0        
  72.1  ISOC   b7 06 b7 06  53 06 52 06  ee 05 ed 05  88 05 88 05  22 05 22 05  bc 04 bc 04  56 04 56 04  f0 03 ef 03  ....S.R.........".".....V.V.....        37.1.0        
  72.1  ISOC   c6 09 c6 09  6b 09 6b 09  0e 09 0f 09  b1 08 b1 08  53 08 54 08  f4 07 f4 07  95 07 96 07  35 07 34 07  ....k.k.........S.T.........5.4.        38.1.0        
 

 

USB请求及描述符在线分析(https://www.usbzh.com/tool/usb.html):

(1)调节音量的USB(特定类)请求内容及解析如下:

  72.0  CTL    21 01 01 02  00 09 02 00                                                                                SET CUR                                  1.1.0        
              (21:接口类型请求=主机到设备
              (01:特定类请求码 SET CUR 
              (02 01:大多数情况取值都为控制选择器CS(高字节),低字节为零(这里非0,那1/2对应左右声道?)。
              (09 00:实体ID(高字节)、接口(低字节)           
              (00 02:数据长度2 

72.0 OUT ff f6 .. 1.2.0
0x21,        // bmRequestType: Dir: H2D, Type: Class, Recipient: Interface
0x01,        // bRequest
0x01, 0x02,  // wValue[0:15] = 0x0201
0x00, 0x09,  // wIndex = 0x0900
0x02, 0x00,  // wLength = 2

// 8 bytes

USB请求的个字节分为5个部分,其变量分别定义为: 1字节的bmRequestType,1 字节的bReqest,2字节的wValue,2字节的wIndex和2字节的wLength.

特定类请求码的定义(详细见https://www.usbzh.com/article/detail-172.html):

Class-Specific Request CodeValue
SET_ CUR 0x01
GET_ CUR 0x81
SET_ MIN 0x02
GET_ MIN 0x82
SET_ MAX 0x03
GET_ MAX 0x83
SET_ RES 0x04
GET_ RES 0x84
SET_MEM 0x05
GET_ MEM 0x85
GET_STAT 0xFF

 

特性单元控制请求支持的选择子(详细见https://www.usbzh.com/article/detail-249.html):

Control SelectorValue
FU_CONTROL_UNDEFINED 0x00
MUTE_CONTROL 0x01
VOLUME_CONTROL 0x02
BASS_CONTROL 0x03
MID_CONTROL 0x04
TREBLE_CONTROL 0x05
GRAPHIC_EQUALIZER_CONTROL 0x06
AUTOMATIC_GAIN_CONTROL 0x07
DELAY_CONTROL 0x08
BASS_BOOST_CONTROL 0x09
LOUDNESS_CONTROL 0x0A

 

反之,usb设备端要去控制主机端系统音量,比如耳机上的音量键去控制windows pc的音量可通过hid协议实现,以下是华为P40 PRO自带的TYPE-C耳机:

调节耳机音量键时的抓包:

USB标准请求特定类请求的概念这里有必要做一下解释:

  • USB标准请求:是USB设备支持的最基本的请求,凡是USB设备都得支持,不管你是HID设备,UVC设备或者UAC等其它设备,或者是自定义USB设备,凡是USB设备,都得支持这些请求。USB标准请求是USB设备通讯的基础,是对USB设备的最基本配置。
  • 特定类请求:一些USB设备除了支持USB标准请求外,还支持其特定类的请求。这里的特定类是其它设类型规范,如HID设备,其有HID类特定请求,这些请求只能出现在HID设备中,其它类型的设备不能用。类特定请求是基本该设备类型的协议扩展,常见的类特定请求有UVC设备的类特定请求,UAC设备的类特定请求和HID设备的类特定请求。

我们知道,不管是什么类型的USB设备,按功能划分可分为控制整个USB设备的,控制某个接口、控制某个端点的,所以不管是USB标准请求还是类特定请求,控制请求的目的地就有设备、接口、端点,也有一些自定义的,如其它。

USB设备的请求都是由主机发起,设备接受响应,所以该请求后的数据就有方向性分为INOUT,该方向是相对USB主机来说。

以上的解释其实就是USB规范对bmRequestType字段的解释,更详尽的该字段解释可见:http://www.usbzh.com/article/detail-417.html

bmRequestType字段的USB标准请求(USB基本请求)

  • 凡是以0x00开头的bmRequestType,都是主机向设备发送数据。
  • 凡是以0x01开头的bmRequestType,都是主机向接口发送数据。
  • 凡是以0x02开头的bmRequestType,都是主机向端点发送数据。
  • 凡是以0x03开头的bmRequestType,都是主机向设备的其它类型发送数据,软件开发者可以自由定义。
  • 凡是以0x80开头的bmRequestType,都是设备向主机发送数据,且返回的数据来源于设备。
  • 凡是以0x81开头的bmRequestType,都是设备的接口向主机发送数据。
  • 凡是以0x82开头的bmRequestType,都是设备中某个接口的端点向主机发送数据。
  • 凡是以0x83开头的bmRequestType,这个是USB标准未规范的,可以自由定义,是其它类型向向主机发送数据

bmRequestType字段的类特定请求(HID,UVC,UAC,BOT

类特定请求是在bmRequestType的基础上加0x20,所以是:

  • 凡是以0x20开头的bmRequestType,都是主机向设备发送数据。
  • 凡是以0x21开头的bmRequestType,都是主机向接口发送数据。
  • 凡是以0x22开头的bmRequestType,都是主机向端点发送数据。
  • 凡是以0x23开头的bmRequestType,都是主机向设备的其它类型发送数据,软件开发者可以自由定义。
  • 凡是以0xa0开头的bmRequestType,都是设备向主机发送数据,且返回的数据来源于设备。
  • 凡是以0xa1开头的bmRequestType,都是设备的接口向主机发送数据。
  • 凡是以0xa2开头的bmRequestType,都是设备中某个接口的端点向主机发送数据。
  • 凡是以0xa3开头的bmRequestType,这个是USB标准未规范的,可以自由定义,是其它类型向向主机发送数据

bmRequestType字段的厂商自定义请求(自定义,不常见)

类特定请求是在bmRequestType的基础上加0x40,所以是:

  • 凡是以0x40开头的bmRequestType,都是主机向设备发送数据。
  • 凡是以0x41开头的bmRequestType,都是主机向接口发送数据。
  • 凡是以0x42开头的bmRequestType,都是主机向端点发送数据。
  • 凡是以0x43开头的bmRequestType,都是主机向设备的其它类型发送数据,软件开发者可以自由定义。
  • 凡是以0xc0开头的bmRequestType,都是设备向主机发送数据,且返回的数据来源于设备。
  • 凡是以0xc1开头的bmRequestType,都是设备的接口向主机发送数据。
  • 凡是以0xc2开头的bmRequestType,都是设备中某个接口的端点向主机发送数据。
  • 凡是以0xc3开头的bmRequestType,这个是USB标准未规范的,可以自由定义,是其它类型向向主机发送数据

在USB请求中(包括标准请求和类特定请求)

  • 其bRequest是协议类型,如SET_DESCRIPTORGET_IDLE,SET_ADDRESS,GET_CUR,SET_CUR等
  • wValue 一般是类相关的,在UVC,UAC中可以是选择子,在标准请求中可以是具体的某些数据,比较详尽的内容
  • wIndex,一般高字节为USB设备类的信息类型(如ReportId类型,描述符类型,UVC/UAC规范中的UnitId,终端ID等),低字节为接口的ID、端点的ID、ReportId或描述符索引。
  • wLength:数据长度,和bmRequestType的最高位相配合使用

相关USB请求参见:

 

不同的请求类型对于其接收者,wValue和wIndex的字段表示的含义有所差别:

bmRequestType(1)bRequest(1)wValue(2)wIndex(2)wLength(2)数据过程
0x00 CLEAR_FEATURE(1) 特性选择 0 0 没有数据
0x01 CLEAR_FEATURE(1) 特性选择 接口号 0 没有数据
0x02 CLEAR_FEATURE(1) 特性选择 端点号 0 没有数据
0x80 GET_CONFIGURATION(8) 0 0 1 配置制
0x80 GET_DESCRIPTOR(6) 描述符类型(高字节)和描述符索引(低字节) 0或语言ID(字符串描述符) 描述符的长度 描述符
0x81 GET_INTERFACE(0x0a) 0 接口号 1 备用(转换)接口
0x80 GET_STATUS(0) 0 0 2 设备状态
0x81 GET_STATUS(0) 0 接口号 2 接口状态
0x82 GET_STATUS(0) 0 端点号 2 端点状态
0x00 SET_ADDRESS(5) 设备地址 0 0 没有数据
0x00 SET_CONFIGURATION(9) 配置值 0 0 没有数据
0x00 SET_DESCRIPTOR(7) 描述符类型(高字节)和描述符索引(低字节) 0或语言ID(字符串描述符) 描述符的长度 描述符
0x00 SET_FEATURE(3) 特性选择 0 0 没有数据
0x01 SET_FEATURE(3) 特性选择 接口号 0 没有数据
0x02 SET_FEATURE(3) 特性选择 端点号 0 没有数据
0x01 SET_INTERFACE(0x0b) 备用接口号(转换接口号) 接口号 0 没有数据
0x82 SYNCH_FRAME(0x0c) 0 端点号 2 帧号

 

(2)报告描述符内容及解析如下:

  73.0  IN     05 0c 09 01  a1 01 15 00  25 01 09 e9  09 ea 75 01  95 02 81 02  09 e2 09 00  81 06 05 0b  09 20 95 01  ........%.....u.............. ..        29.2.0        
               81 06 05 0c  09 00 95 03  81 02 26 ff  00 09 00 75  08 95 03 81  02 09 00 95  04 91 02 c0               ..........&....u............            29.2.32       
  73.7  IN     00 00 00 00                                                                                             ....                                    30.1.0        
0x05, 0x0C,        // Usage Page (Consumer)
0x09, 0x01,        // Usage (Consumer Control)
0xA1, 0x01,        // Collection (Application)
0x15, 0x00,        //   Logical Minimum (0)
0x25, 0x01,        //   Logical Maximum (1)
0x09, 0xE9,        //   Usage (Volume Increment)
0x09, 0xEA,        //   Usage (Volume Decrement)
0x75, 0x01,        //   Report Size (1)
0x95, 0x02,        //   Report Count (2)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0xE2,        //   Usage (Mute)
0x09, 0x00,        //   Usage (Unassigned)
0x81, 0x06,        //   Input (Data,Var,Rel,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x0B,        //   Usage Page (Telephony)
0x09, 0x20,        //   Usage (Hook Switch)
0x95, 0x01,        //   Report Count (1)
0x81, 0x06,        //   Input (Data,Var,Rel,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x0C,        //   Usage Page (Consumer)
0x09, 0x00,        //   Usage (Unassigned)
0x95, 0x03,        //   Report Count (3)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x26, 0xFF, 0x00,  //   Logical Maximum (255)
0x09, 0x00,        //   Usage (Unassigned)
0x75, 0x08,        //   Report Size (8)
0x95, 0x03,        //   Report Count (3)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x00,        //   Usage (Unassigned)
0x95, 0x04,        //   Report Count (4)
0x91, 0x02,        //   Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0xC0,              // End Collection

// 60 bytes

 

完整的usb设备描述符:

    =========================== USB Port4 ===========================

Connection Status        : 0x01 (Device is connected)
Port Chain               : 2-1-4

      ========================== Summary =========================
Vendor ID                : 0x0D8C (C-MEDIA ELECTRONICS INC.)
Product ID               : 0x0014
USB Version              : 1.10
Port maximum Speed       : High-Speed
Device maximum Speed     : Full-Speed
Device Connection Speed  : Full-Speed
Self powered             : no
Demanded Current         : 100 mA
Used Endpoints           : 2

      ======================== USB Device ========================

        +++++++++++++++++ Device Information ++++++++++++++++++
Device Description       : USB Composite Device
Device Path              : \\?\USB#VID_0D8C&PID_0014#6&7da4f7c&0&4#{a5dcbf10-6530-11d2-901f-00c04fb951ed} (GUID_DEVINTERFACE_USB_DEVICE)
Kernel Name              : \Device\USBPDO-9
Device ID                : USB\VID_0D8C&PID_0014\6&7DA4F7C&0&4
Hardware IDs             : USB\VID_0D8C&PID_0014&REV_0100 USB\VID_0D8C&PID_0014
Driver KeyName           : {36fc9e60-c465-11cf-8056-444553540000}\0040 (GUID_DEVCLASS_USB)
Driver                   : \SystemRoot\System32\drivers\usbccgp.sys (Version: 10.0.22621.608  Date: 2022-10-12)
Driver Inf               : C:\WINDOWS\inf\usb.inf
Legacy BusType           : PNPBus
Class                    : USB
Class GUID               : {36fc9e60-c465-11cf-8056-444553540000} (GUID_DEVCLASS_USB)
Service                  : usbccgp
Enumerator               : USB
Location Info            : Port_#0004.Hub_#0003
Location IDs             : PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(1)#USB(4), ACPI(_SB_)#ACPI(PC00)#ACPI(XHCI)#ACPI(RHUB)#ACPI(HS01)#USB(4)
Container ID             : {785c39f1-6e2a-11ed-a4ce-8cb87eb37742}
Manufacturer Info        : (标准 USB 主控制器)
Capabilities             : 0x84 (Removable, SurpriseRemovalOK)
Status                   : 0x0180600A (DN_DRIVER_LOADED, DN_STARTED, DN_DISABLEABLE, DN_REMOVABLE, DN_NT_ENUMERATOR, DN_NT_DRIVER)
Problem Code             : 0
Address                  : 4
HcDisableSelectiveSuspend: 0
EnableSelectiveSuspend   : 0
SelectiveSuspendEnabled  : 0
EnhancedPowerMgmtEnabled : 0
IdleInWorkingState       : 0
WakeFromSleepState       : 0
Power State              : D0 (supported: D0, D2, D3, wake from D0, wake from D2)
 Child Device 1          : USB Audio Device
  Device Path 1          : \\?\USB#VID_0D8C&PID_0014&MI_00#7&2f7b51ae&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global (AM_KSCATEGORY_CAPTURE)
  Device Path 2          : \\?\USB#VID_0D8C&PID_0014&MI_00#7&2f7b51ae&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global (AM_KSCATEGORY_CAPTURE)
  Device Path 3          : \\?\USB#VID_0D8C&PID_0014&MI_00#7&2f7b51ae&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global (AM_KSCATEGORY_CAPTURE)
  Device Path 4          : \\?\USB#VID_0D8C&PID_0014&MI_00#7&2f7b51ae&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global (AM_KSCATEGORY_CAPTURE)
  Device Path 5          : \\?\USB#VID_0D8C&PID_0014&MI_00#7&2f7b51ae&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global (AM_KSCATEGORY_CAPTURE)
  Device Path 6          : \\?\USB#VID_0D8C&PID_0014&MI_00#7&2f7b51ae&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global (AM_KSCATEGORY_CAPTURE)
  Device Path 7          : \\?\USB#VID_0D8C&PID_0014&MI_00#7&2f7b51ae&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global (AM_KSCATEGORY_CAPTURE)
  Device Path 8          : \\?\USB#VID_0D8C&PID_0014&MI_00#7&2f7b51ae&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global (AM_KSCATEGORY_CAPTURE)
  Device Path 9          : \\?\USB#VID_0D8C&PID_0014&MI_00#7&2f7b51ae&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global (AM_KSCATEGORY_CAPTURE)
  Device Path 10         : \\?\USB#VID_0D8C&PID_0014&MI_00#7&2f7b51ae&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global (AM_KSCATEGORY_CAPTURE)
  Device Path 11         : \\?\USB#VID_0D8C&PID_0014&MI_00#7&2f7b51ae&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global (AM_KSCATEGORY_CAPTURE)
  Device Path 12         : \\?\USB#VID_0D8C&PID_0014&MI_00#7&2f7b51ae&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global (AM_KSCATEGORY_CAPTURE)
  Kernel Name            : \Device\00000454
  Device ID              : USB\VID_0D8C&PID_0014&MI_00\7&2F7B51AE&0&0000
  Class                  : MEDIA
  Driver KeyName         : {4d36e96c-e325-11ce-bfc1-08002be10318}\0027 (GUID_DEVCLASS_MEDIA)
  Service                : usbaudio
  Location               : 0000.0014.0000.001.004.000.000.000.000
  LocationPaths          : PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(1)#USB(4)#USBMI(0)  PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(1)#USB(4)#USB(4)  ACPI(_SB_)#ACPI(PC00)#ACPI(XHCI)#ACPI(RHUB)#ACPI(HS01)#USB(4)#USBMI(0)  ACPI(_SB_)#ACPI(PC00)#ACPI(XHCI)#ACPI(RHUB)#ACPI(HS01)#USB(4)#USB(4)
   Child Device 1        : 扬声器 (USB Audio Device) (音频端点)
    Device ID            : SWD\MMDEVAPI\{0.0.0.00000000}.{87FF8E0D-21EE-4057-971D-3182F257AF34}
    Class                : AudioEndpoint
    Driver KeyName       : {c166523c-fe0c-4a94-a586-f1a80cfbbf3e}\0072 (AUDIOENDPOINT_CLASS_UUID)
   Child Device 2        : 麦克风 (USB Audio Device) (音频端点)
    Device ID            : SWD\MMDEVAPI\{0.0.1.00000000}.{62244A14-B910-4942-9BFB-50D623AC91A1}
    Class                : AudioEndpoint
    Driver KeyName       : {c166523c-fe0c-4a94-a586-f1a80cfbbf3e}\0073 (AUDIOENDPOINT_CLASS_UUID)
 Child Device 2          : USB 输入设备
  Device ID              : USB\VID_0D8C&PID_0014&MI_03\7&2F7B51AE&0&0003
  Class                  : HIDClass
  Driver KeyName         : {745a17a0-74d3-11d0-b6fe-00a0c90f57da}\0080 (GUID_DEVCLASS_HIDCLASS)
  Service                : HidUsb
  Location               : 0000.0014.0000.001.004.000.000.000.000
  LocationPaths          : PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(1)#USB(4)#USBMI(3)  ACPI(_SB_)#ACPI(PC00)#ACPI(XHCI)#ACPI(RHUB)#ACPI(HS01)#USB(4)#USBMI(3)
   Child Device 1        : 符合 HID 标准的用户控制设备
    Device Path          : \\?\HID#VID_0D8C&PID_0014&MI_03#8&32eba1a5&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} (GUID_DEVINTERFACE_HID)
    Kernel Name          : \Device\00000457
    Device ID            : HID\VID_0D8C&PID_0014&MI_03\8&32EBA1A5&0&0000
    Class                : HIDClass
    Driver KeyName       : {745a17a0-74d3-11d0-b6fe-00a0c90f57da}\0081 (GUID_DEVCLASS_HIDCLASS)

        +++++++++++++++++ Registry USB Flags +++++++++++++++++
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags
 GlobalDisableSerNumGen  : REG_BINARY 00

        ---------------- Connection Information ---------------
Connection Index         : 0x04 (Port 4)
Connection Status        : 0x01 (DeviceConnected)
Current Config Value     : 0x01 (Configuration 1)
Device Address           : 0x36 (54)
Is Hub                   : 0x00 (no)
Device Bus Speed         : 0x01 (Full-Speed)
Number Of Open Pipes     : 0x01 (1 pipe to data endpoints)
Pipe[0]                  : EndpointID=7  Direction=IN   ScheduleOffset=0  Type=Interrupt
Data (HexDump)           : 04 00 00 00 12 01 10 01 00 00 00 08 8C 0D 14 00   ................
                           00 01 01 02 00 01 01 01 00 36 00 01 00 00 00 01   .........6......
                           00 00 00 07 05 87 03 04 00 02 00 00 00 00         ..............

        --------------- Connection Information V2 -------------
Connection Index         : 0x04 (4)
Length                   : 0x10 (16 bytes)
SupportedUsbProtocols    : 0x03
 Usb110                  : 1 (yes, port supports USB 1.1)
 Usb200                  : 1 (yes, port supports USB 2.0)
 Usb300                  : 0 (no, port not supports USB 3.0)
 ReservedMBZ             : 0x00
Flags                    : 0x00
 DevIsOpAtSsOrHigher     : 0 (Device is not operating at SuperSpeed or higher)
 DevIsSsCapOrHigher      : 0 (Device is not SuperSpeed capable or higher)
 DevIsOpAtSsPlusOrHigher : 0 (Device is not operating at SuperSpeedPlus or higher)
 DevIsSsPlusCapOrHigher  : 0 (Device is not SuperSpeedPlus capable or higher)
 ReservedMBZ             : 0x00
Data (HexDump)           : 04 00 00 00 10 00 00 00 03 00 00 00 00 00 00 00   ................

    ---------------------- Device Descriptor ----------------------
bLength                  : 0x12 (18 bytes)
bDescriptorType          : 0x01 (Device Descriptor)
bcdUSB                   : 0x110 (USB Version 1.10)
bDeviceClass             : 0x00 (defined by the interface descriptors)
bDeviceSubClass          : 0x00
bDeviceProtocol          : 0x00
bMaxPacketSize0          : 0x08 (8 bytes)
idVendor                 : 0x0D8C (C-MEDIA ELECTRONICS INC.)
idProduct                : 0x0014
bcdDevice                : 0x0100
iManufacturer            : 0x01 (String Descriptor 1)
 Language 0x0409         : "C-Media Electronics Inc."
iProduct                 : 0x02 (String Descriptor 2)
 Language 0x0409         : "USB Audio Device"
iSerialNumber            : 0x00 (No String Descriptor)
bNumConfigurations       : 0x01 (1 Configuration)
Data (HexDump)           : 12 01 10 01 00 00 00 08 8C 0D 14 00 00 01 01 02   ................
                           00 01                                             ..

    ------------------ Configuration Descriptor -------------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x02 (Configuration Descriptor)
wTotalLength             : 0x00FD (253 bytes)
bNumInterfaces           : 0x04 (4 Interfaces)
bConfigurationValue      : 0x01 (Configuration 1)
iConfiguration           : 0x00 (No String Descriptor)
bmAttributes             : 0x80
 D7: Reserved, set 1     : 0x01
 D6: Self Powered        : 0x00 (no)
 D5: Remote Wakeup       : 0x00 (no)
 D4..0: Reserved, set 0  : 0x00
MaxPower                 : 0x32 (100 mA)
Data (HexDump)           : 09 02 FD 00 04 01 00 80 32 09 04 00 00 00 01 01   ........2.......
                           00 00 0A 24 01 00 01 64 00 02 01 02 0C 24 02 01   ...$...d.....$..
                           01 01 00 02 03 00 00 00 0C 24 02 02 01 02 00 01   .........$......
                           01 00 00 00 09 24 03 06 01 03 00 09 00 09 24 03   .....$........$.
                           07 01 01 00 08 00 07 24 05 08 01 0A 00 0A 24 06   .......$......$.
                           09 0F 01 01 02 02 00 09 24 06 0A 02 01 43 00 00   ........$....C..
                           09 24 06 0D 02 01 03 00 00 0D 24 04 0F 02 01 0D   .$........$.....
                           02 03 00 00 00 00 09 04 01 00 00 01 02 00 00 09   ................
                           04 01 01 01 01 02 00 00 07 24 01 01 01 01 00 0E   .........$......
                           24 02 01 02 02 10 02 80 BB 00 44 AC 00 09 05 01   $.........D.....
                           09 C8 00 01 00 00 07 25 01 01 01 01 00 09 04 02   .......%........
                           00 00 01 02 00 00 09 04 02 01 01 01 02 00 00 07   ................
                           24 01 07 01 01 00 0E 24 02 01 01 02 10 02 80 BB   $......$........
                           00 44 AC 00 09 05 82 0D 64 00 01 00 00 07 25 01   .D......d.....%.
                           01 00 00 00 09 04 03 00 01 03 00 00 00 09 21 00   ..............!.
                           01 00 01 22 3C 00 07 05 87 03 04 00 02            ..."<........

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x00
bAlternateSetting        : 0x00
bNumEndpoints            : 0x00 (Default Control Pipe only)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x01 (Audio Control)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 00 00 00 01 01 00 00                        .........

        ------ Audio Control Interface Header Descriptor ------
bLength                  : 0x0A (10 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x01 (Header)
bcdADC                   : 0x0100
wTotalLength             : 0x0064 (100 bytes)
bInCollection            : 0x02
baInterfaceNr[1]         : 0x01
baInterfaceNr[2]         : 0x02
Data (HexDump)           : 0A 24 01 00 01 64 00 02 01 02                     .$...d....

        ------- Audio Control Input Terminal Descriptor -------
bLength                  : 0x0C (12 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Input Terminal)
bTerminalID              : 0x01
wTerminalType            : 0x0101 (USB streaming)
bAssocTerminal           : 0x00
bNrChannels              : 0x02 (2 channels)
wChannelConfig           : 0x0003 (L, R)
iChannelNames            : 0x00 (No String Descriptor)
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 0C 24 02 01 01 01 00 02 03 00 00 00               .$..........

        ------- Audio Control Input Terminal Descriptor -------
bLength                  : 0x0C (12 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Input Terminal)
bTerminalID              : 0x02
wTerminalType            : 0x0201 (Microphone)
bAssocTerminal           : 0x00
bNrChannels              : 0x01 (1 channel)
wChannelConfig           : 0x0001 (L)
iChannelNames            : 0x00 (No String Descriptor)
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 0C 24 02 02 01 02 00 01 01 00 00 00               .$..........

        ------- Audio Control Output Terminal Descriptor ------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x03 (Output Terminal)
bTerminalID              : 0x06
wTerminalType            : 0x0301 (Speaker)
bAssocTerminal           : 0x00 (0)
bSourceID                : 0x09 (9)
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 09 24 03 06 01 03 00 09 00                        .$.......

        ------- Audio Control Output Terminal Descriptor ------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x03 (Output Terminal)
bTerminalID              : 0x07
wTerminalType            : 0x0101 (USB streaming)
bAssocTerminal           : 0x00 (0)
bSourceID                : 0x08 (8)
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 09 24 03 07 01 01 00 08 00                        .$.......

        ------- Audio Control Selector Unit Descriptor --------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x05 (Selector Unit)
bUnitID                  : 0x08
bNrInPins                : 0x01 (1 pins)
baSourceID[1]            : 0x0A
iSelector                : 0x00 (No String Descriptor)
Data (HexDump)           : 07 24 05 08 01 0A 00                              .$.....

        -------- Audio Control Feature Unit Descriptor --------
bLength                  : 0x0A (10 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x06 (Feature Unit)
bUnitID                  : 0x09 (9)
bSourceID                : 0x0F (15)
bControlSize             : 0x01 (1 byte per control)
bmaControls[0]           : 0x01
 D0: Mute                : 1
 D1: Volume              : 0
 D2: Bass                : 0
 D3: Mid                 : 0
 D4: Treble              : 0
 D5: Graphic Equalizer   : 0
 D6: Automatic Gain      : 0
 D7: Delay               : 0
bmaControls[1]           : 0x02
 D0: Mute                : 0
 D1: Volume              : 1
 D2: Bass                : 0
 D3: Mid                 : 0
 D4: Treble              : 0
 D5: Graphic Equalizer   : 0
 D6: Automatic Gain      : 0
 D7: Delay               : 0
bmaControls[2]           : 0x02
 D0: Mute                : 0
 D1: Volume              : 1
 D2: Bass                : 0
 D3: Mid                 : 0
 D4: Treble              : 0
 D5: Graphic Equalizer   : 0
 D6: Automatic Gain      : 0
 D7: Delay               : 0
iFeature                 : 0x00 (No String Descriptor)
Data (HexDump)           : 0A 24 06 09 0F 01 01 02 02 00                     .$........

        -------- Audio Control Feature Unit Descriptor --------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x06 (Feature Unit)
bUnitID                  : 0x0A (10)
bSourceID                : 0x02 (2)
bControlSize             : 0x01 (1 byte per control)
bmaControls[0]           : 0x43
 D0: Mute                : 1
 D1: Volume              : 1
 D2: Bass                : 0
 D3: Mid                 : 0
 D4: Treble              : 0
 D5: Graphic Equalizer   : 0
 D6: Automatic Gain      : 1
 D7: Delay               : 0
bmaControls[1]           : 0x00
 D0: Mute                : 0
 D1: Volume              : 0
 D2: Bass                : 0
 D3: Mid                 : 0
 D4: Treble              : 0
 D5: Graphic Equalizer   : 0
 D6: Automatic Gain      : 0
 D7: Delay               : 0
iFeature                 : 0x00 (No String Descriptor)
Data (HexDump)           : 09 24 06 0A 02 01 43 00 00                        .$....C..

        -------- Audio Control Feature Unit Descriptor --------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x06 (Feature Unit)
bUnitID                  : 0x0D (13)
bSourceID                : 0x02 (2)
bControlSize             : 0x01 (1 byte per control)
bmaControls[0]           : 0x03
 D0: Mute                : 1
 D1: Volume              : 1
 D2: Bass                : 0
 D3: Mid                 : 0
 D4: Treble              : 0
 D5: Graphic Equalizer   : 0
 D6: Automatic Gain      : 0
 D7: Delay               : 0
bmaControls[1]           : 0x00
 D0: Mute                : 0
 D1: Volume              : 0
 D2: Bass                : 0
 D3: Mid                 : 0
 D4: Treble              : 0
 D5: Graphic Equalizer   : 0
 D6: Automatic Gain      : 0
 D7: Delay               : 0
iFeature                 : 0x00 (No String Descriptor)
Data (HexDump)           : 09 24 06 0D 02 01 03 00 00                        .$.......

        --------- Audio Control Mixer Unit Descriptor ---------
bLength                  : 0x0D (13 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x04 (Mixer Unit)
bUnitID                  : 0x0F
bNrInPins                : 0x02 (2 pins)
baSourceID[1]            : 0x01
baSourceID[2]            : 0x0D
bNrChannels              : 0x02 (2 channels)
wChannelConfig           : 0x0003 (R)
iChannelNames            : 0x00 (No String Descriptor)
bmControls (HexDump)     : 00                                                .
iMixer                   : 0x00 (No String Descriptor)
Data (HexDump)           : 0D 24 04 0F 02 01 0D 02 03 00 00 00 00            .$...........

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x01
bAlternateSetting        : 0x00
bNumEndpoints            : 0x00 (Default Control Pipe only)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 01 00 00 01 02 00 00                        .........

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x01
bAlternateSetting        : 0x01
bNumEndpoints            : 0x01 (1 Endpoint)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 01 01 01 01 02 00 00                        .........

        -------- Audio Streaming Interface Descriptor ---------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x01
bTerminalLink            : 0x01
bDelay                   : 0x01
wFormatTag               : 0x0001 (PCM)
Data (HexDump)           : 07 24 01 01 01 01 00                              .$.....

        ------- Audio Streaming Format Type Descriptor --------
bLength                  : 0x0E (14 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Format Type)
bFormatType              : 0x01 (FORMAT_TYPE_I)
bNrChannels              : 0x02 (2 channels)
bSubframeSize            : 0x02 (2 bytes per subframe)
bBitResolution           : 0x10 (16 bits per sample)
bSamFreqType             : 0x02 (supports 2 sample frequencies)
tSamFreq[1]              : 0x0BB80 (48000 Hz)
tSamFreq[2]              : 0x0AC44 (44100 Hz)
Data (HexDump)           : 0E 24 02 01 02 02 10 02 80 BB 00 44 AC 00         .$.........D..

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x01 (Direction=OUT EndpointID=1)
bmAttributes             : 0x09 (TransferType=Isochronous  SyncType=Adaptive  EndpointType=Data)
wMaxPacketSize           : 0x00C8 (200 bytes)
bInterval                : 0x01 (1 ms)
bRefresh                 : 0x00
bSynchAddress            : 0x00
Data (HexDump)           : 09 05 01 09 C8 00 01 00 00                        .........

        ----------- Audio Data Endpoint Descriptor ------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x25 (Audio Endpoint Descriptor)
bDescriptorSubtype       : 0x01 (General)
bmAttributes             : 0x01
 D0   : Sampling Freq    : 0x01 (supported)
 D1   : Pitch            : 0x00 (not supported)
 D6..2: Reserved         : 0x00
 D7   : MaxPacketsOnly   : 0x00 (no)
bLockDelayUnits          : 0x01 (Milliseconds)
wLockDelay               : 0x0001 (1 ms)
Data (HexDump)           : 07 25 01 01 01 01 00                              .%.....

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x02
bAlternateSetting        : 0x00
bNumEndpoints            : 0x00 (Default Control Pipe only)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 02 00 00 01 02 00 00                        .........

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x02
bAlternateSetting        : 0x01
bNumEndpoints            : 0x01 (1 Endpoint)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 02 01 01 01 02 00 00                        .........

        -------- Audio Streaming Interface Descriptor ---------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x01
bTerminalLink            : 0x07
bDelay                   : 0x01
wFormatTag               : 0x0001 (PCM)
Data (HexDump)           : 07 24 01 07 01 01 00                              .$.....

        ------- Audio Streaming Format Type Descriptor --------
bLength                  : 0x0E (14 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Format Type)
bFormatType              : 0x01 (FORMAT_TYPE_I)
bNrChannels              : 0x01 (1 channel)
bSubframeSize            : 0x02 (2 bytes per subframe)
bBitResolution           : 0x10 (16 bits per sample)
bSamFreqType             : 0x02 (supports 2 sample frequencies)
tSamFreq[1]              : 0x0BB80 (48000 Hz)
tSamFreq[2]              : 0x0AC44 (44100 Hz)
Data (HexDump)           : 0E 24 02 01 01 02 10 02 80 BB 00 44 AC 00         .$.........D..

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x82 (Direction=IN EndpointID=2)
bmAttributes             : 0x0D (TransferType=Isochronous  SyncType=Synchronous  EndpointType=Data)
wMaxPacketSize           : 0x0064 (100 bytes)
bInterval                : 0x01 (1 ms)
bRefresh                 : 0x00
bSynchAddress            : 0x00
Data (HexDump)           : 09 05 82 0D 64 00 01 00 00                        ....d....

        ----------- Audio Data Endpoint Descriptor ------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x25 (Audio Endpoint Descriptor)
bDescriptorSubtype       : 0x01 (General)
bmAttributes             : 0x01
 D0   : Sampling Freq    : 0x01 (supported)
 D1   : Pitch            : 0x00 (not supported)
 D6..2: Reserved         : 0x00
 D7   : MaxPacketsOnly   : 0x00 (no)
bLockDelayUnits          : 0x00 (Undefined)
wLockDelay               : 0x0000
Data (HexDump)           : 07 25 01 01 00 00 00                              .%.....

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x03
bAlternateSetting        : 0x00
bNumEndpoints            : 0x01 (1 Endpoint)
bInterfaceClass          : 0x03 (HID - Human Interface Device)
bInterfaceSubClass       : 0x00 (None)
bInterfaceProtocol       : 0x00 (None)
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 03 00 01 03 00 00 00                        .........

        ------------------- HID Descriptor --------------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x21 (HID Descriptor)
bcdHID                   : 0x0100 (HID Version 1.00)
bCountryCode             : 0x00 (00 = not localized)
bNumDescriptors          : 0x01
Data (HexDump)           : 09 21 00 01 00 01 22 3C 00                        .!...."<.
Descriptor 1:
bDescriptorType          : 0x22 (Class=Report)
wDescriptorLength        : 0x003C (60 bytes)
Error reading descriptor : ERROR_INVALID_PARAMETER (due to a obscure limitation of the Win32 USB API, see UsbTreeView.txt)

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x87 (Direction=IN EndpointID=7)
bmAttributes             : 0x03 (TransferType=Interrupt)
wMaxPacketSize           : 0x0004 (4 bytes)
bInterval                : 0x02 (2 ms)
Data (HexDump)           : 07 05 87 03 04 00 02                              .......

      -------------------- String Descriptors -------------------
             ------ String Descriptor 0 ------
bLength                  : 0x04 (4 bytes)
bDescriptorType          : 0x03 (String Descriptor)
Language ID[0]           : 0x0409 (English - United States)
Data (HexDump)           : 04 03 09 04                                       ....
             ------ String Descriptor 1 ------
bLength                  : 0x3E (62 bytes)
bDescriptorType          : 0x03 (String Descriptor)
Language 0x0409          : "C-Media Electronics Inc.°°°°°°"  *!*ERROR  contains 6 NULL characters
Data (HexDump)           : 3E 03 43 00 2D 00 4D 00 65 00 64 00 69 00 61 00   >.C.-.M.e.d.i.a.
                           20 00 45 00 6C 00 65 00 63 00 74 00 72 00 6F 00    .E.l.e.c.t.r.o.
                           6E 00 69 00 63 00 73 00 20 00 49 00 6E 00 63 00   n.i.c.s. .I.n.c.
                           2E 00 00 00 00 00 00 00 00 00 00 00 00 00         ..............
             ------ String Descriptor 2 ------
bLength                  : 0x3E (62 bytes)
bDescriptorType          : 0x03 (String Descriptor)
Language 0x0409          : "USB Audio Device°°°°°°°°°°°°°°"  *!*ERROR  contains 14 NULL characters
Data (HexDump)           : 3E 03 55 00 53 00 42 00 20 00 41 00 75 00 64 00   >.U.S.B. .A.u.d.
                           69 00 6F 00 20 00 44 00 65 00 76 00 69 00 63 00   i.o. .D.e.v.i.c.
                           65 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   e...............
                           00 00 00 00 00 00 00 00 00 00 00 00 00 00         ..............

 

posted on 2022-11-30 17:36  sheldon_blogs  阅读(3007)  评论(0编辑  收藏  举报

导航