usbdesc.h
上传用户:gzccxsp
上传日期:2015-07-14
资源大小:182k
文件大小:9k
源码类别:

MacOS编程

开发平台:

Visual C++

  1. /*++
  2. Copyright (c) 1997-1998 Microsoft Corporation
  3. Module Name:
  4.     USBDESC.H
  5. Abstract:
  6.     This is a header file for USB descriptors which are not yet in
  7.     a standard system header file.
  8. Environment:
  9.     user mode
  10. Revision History:
  11.     03-06-1998 : created
  12. --*/
  13. #pragma pack(push, 1)
  14. //*****************************************************************************
  15. // D E F I N E S
  16. //*****************************************************************************
  17. #define USB_HID_DESCRIPTOR_TYPE             0x21
  18. //
  19. // USB Device Class Definition for Audio Devices
  20. // Appendix A.  Audio Device Class Codes
  21. //
  22. // A.2  Audio Interface Subclass Codes
  23. //
  24. #define USB_AUDIO_SUBCLASS_UNDEFINED        0x00
  25. #define USB_AUDIO_SUBCLASS_AUDIOCONTROL     0x01
  26. #define USB_AUDIO_SUBCLASS_AUDIOSTREAMING   0x02
  27. #define USB_AUDIO_SUBCLASS_MIDISTREAMING    0x03
  28. // A.4  Audio Class-Specific Descriptor Types
  29. //
  30. #define USB_AUDIO_CS_UNDEFINED              0x20
  31. #define USB_AUDIO_CS_DEVICE                 0x21
  32. #define USB_AUDIO_CS_CONFIGURATION          0x23
  33. #define USB_AUDIO_CS_STRING                 0x24
  34. #define USB_AUDIO_CS_INTERFACE              0x24
  35. #define USB_AUDIO_CS_ENDPOINT               0x25
  36. // A.5  Audio Class-Specific AC (Audio Control) Interface Descriptor Subtypes
  37. //
  38. #define USB_AUDIO_AC_UNDEFINED              0x00
  39. #define USB_AUDIO_AC_HEADER                 0x01
  40. #define USB_AUDIO_AC_INPUT_TERMINAL         0x02
  41. #define USB_AUDIO_AC_OUTPUT_TERMINAL        0x03
  42. #define USB_AUDIO_AC_MIXER_UNIT             0x04
  43. #define USB_AUDIO_AC_SELECTOR_UNIT          0x05
  44. #define USB_AUDIO_AC_FEATURE_UNIT           0x06
  45. #define USB_AUDIO_AC_PROCESSING_UNIT        0x07
  46. #define USB_AUDIO_AC_EXTENSION_UNIT         0x08
  47. // A.6  Audio Class-Specific AS (Audio Streaming) Interface Descriptor Subtypes
  48. //
  49. #define USB_AUDIO_AS_UNDEFINED              0x00
  50. #define USB_AUDIO_AS_GENERAL                0x01
  51. #define USB_AUDIO_AS_FORMAT_TYPE            0x02
  52. #define USB_AUDIO_AS_FORMAT_SPECIFIC        0x03
  53. // A.7 Processing Unit Process Types
  54. //
  55. #define USB_AUDIO_PROCESS_UNDEFINED         0x00
  56. #define USB_AUDIO_PROCESS_UPDOWNMIX         0x01
  57. #define USB_AUDIO_PROCESS_DOLBYPROLOGIC     0x02
  58. #define USB_AUDIO_PROCESS_3DSTEREOEXTENDER  0x03
  59. #define USB_AUDIO_PROCESS_REVERBERATION     0x04
  60. #define USB_AUDIO_PROCESS_CHORUS            0x05
  61. #define USB_AUDIO_PROCESS_DYNRANGECOMP      0x06
  62. //*****************************************************************************
  63. // T Y P E D E F S
  64. //*****************************************************************************
  65. // HID Class HID Descriptor
  66. //
  67. typedef struct _USB_HID_DESCRIPTOR
  68. {
  69.     UCHAR   bLength;
  70.     UCHAR   bDescriptorType;
  71.     USHORT  bcdHID;
  72.     UCHAR   bCountryCode;
  73.     UCHAR   bNumDescriptors;
  74.     struct
  75.     {
  76.         UCHAR   bDescriptorType;
  77.         USHORT  wDescriptorLength;
  78.     } OptionalDescriptors[1];
  79. } USB_HID_DESCRIPTOR, *PUSB_HID_DESCRIPTOR;
  80. // Common Class Endpoint Descriptor
  81. //
  82. typedef struct _USB_ENDPOINT_DESCRIPTOR2 {
  83.     UCHAR  bLength;             // offset 0, size 1
  84.     UCHAR  bDescriptorType;     // offset 1, size 1
  85.     UCHAR  bEndpointAddress;    // offset 2, size 1
  86.     UCHAR  bmAttributes;        // offset 3, size 1
  87.     USHORT wMaxPacketSize;      // offset 4, size 2
  88.     USHORT wInterval;           // offset 6, size 2
  89.     UCHAR  bSyncAddress;        // offset 8, size 1
  90. } USB_ENDPOINT_DESCRIPTOR2, *PUSB_ENDPOINT_DESCRIPTOR2;
  91. // Common Class Interface Descriptor
  92. //
  93. typedef struct _USB_INTERFACE_DESCRIPTOR2 {
  94.     UCHAR  bLength;             // offset 0, size 1
  95.     UCHAR  bDescriptorType;     // offset 1, size 1
  96.     UCHAR  bInterfaceNumber;    // offset 2, size 1
  97.     UCHAR  bAlternateSetting;   // offset 3, size 1
  98.     UCHAR  bNumEndpoints;       // offset 4, size 1
  99.     UCHAR  bInterfaceClass;     // offset 5, size 1
  100.     UCHAR  bInterfaceSubClass;  // offset 6, size 1
  101.     UCHAR  bInterfaceProtocol;  // offset 7, size 1
  102.     UCHAR  iInterface;          // offset 8, size 1
  103.     USHORT wNumClasses;         // offset 9, size 2
  104. } USB_INTERFACE_DESCRIPTOR2, *PUSB_INTERFACE_DESCRIPTOR2;
  105. //
  106. // USB Device Class Definition for Audio Devices
  107. //
  108. typedef struct _USB_AUDIO_COMMON_DESCRIPTOR {
  109.     UCHAR  bLength;
  110.     UCHAR  bDescriptorType;
  111.     UCHAR  bDescriptorSubtype;
  112. } USB_AUDIO_COMMON_DESCRIPTOR,
  113. *PUSB_AUDIO_COMMON_DESCRIPTOR;
  114. // 4.3.2 Class-Specific AC (Audio Control) Interface Descriptor
  115. //
  116. typedef struct _USB_AUDIO_AC_INTERFACE_HEADER_DESCRIPTOR {
  117.     UCHAR  bLength;
  118.     UCHAR  bDescriptorType;
  119.     UCHAR  bDescriptorSubtype;
  120.     USHORT bcdADC;
  121.     USHORT wTotalLength;
  122.     UCHAR  bInCollection;
  123.     UCHAR  baInterfaceNr[1];
  124. } USB_AUDIO_AC_INTERFACE_HEADER_DESCRIPTOR,
  125. *PUSB_AUDIO_AC_INTERFACE_HEADER_DESCRIPTOR;
  126. // 4.3.2.1 Input Terminal Descriptor
  127. //
  128. typedef struct _USB_AUDIO_INPUT_TERMINAL_DESCRIPTOR {
  129.     UCHAR  bLength;
  130.     UCHAR  bDescriptorType;
  131.     UCHAR  bDescriptorSubtype;
  132.     UCHAR  bTerminalID;
  133.     USHORT wTerminalType;
  134.     UCHAR  bAssocTerminal;
  135.     UCHAR  bNrChannels;
  136.     USHORT wChannelConfig;
  137.     UCHAR  iChannelNames;
  138.     UCHAR  iTerminal;
  139. } USB_AUDIO_INPUT_TERMINAL_DESCRIPTOR,
  140. *PUSB_AUDIO_INPUT_TERMINAL_DESCRIPTOR;
  141. // 4.3.2.2 Output Terminal Descriptor
  142. //
  143. typedef struct _USB_AUDIO_OUTPUT_TERMINAL_DESCRIPTOR {
  144.     UCHAR  bLength;
  145.     UCHAR  bDescriptorType;
  146.     UCHAR  bDescriptorSubtype;
  147.     UCHAR  bTerminalID;
  148.     USHORT wTerminalType;
  149.     UCHAR  bAssocTerminal;
  150.     UCHAR  bSoruceID;
  151.     UCHAR  iTerminal;
  152. } USB_AUDIO_OUTPUT_TERMINAL_DESCRIPTOR,
  153. *PUSB_AUDIO_OUTPUT_TERMINAL_DESCRIPTOR;
  154. // 4.3.2.3 Mixer Unit Descriptor
  155. //
  156. typedef struct _USB_AUDIO_MIXER_UNIT_DESCRIPTOR {
  157.     UCHAR  bLength;
  158.     UCHAR  bDescriptorType;
  159.     UCHAR  bDescriptorSubtype;
  160.     UCHAR  bUnitID;
  161.     UCHAR  bNrInPins;
  162.     UCHAR  baSourceID[1];
  163. } USB_AUDIO_MIXER_UNIT_DESCRIPTOR,
  164. *PUSB_AUDIO_MIXER_UNIT_DESCRIPTOR;
  165. // 4.3.2.4 Selector Unit Descriptor
  166. //
  167. typedef struct _USB_AUDIO_SELECTOR_UNIT_DESCRIPTOR {
  168.     UCHAR  bLength;
  169.     UCHAR  bDescriptorType;
  170.     UCHAR  bDescriptorSubtype;
  171.     UCHAR  bUnitID;
  172.     UCHAR  bNrInPins;
  173.     UCHAR  baSourceID[1];
  174. } USB_AUDIO_SELECTOR_UNIT_DESCRIPTOR,
  175. *PUSB_AUDIO_SELECTOR_UNIT_DESCRIPTOR;
  176. // 4.3.2.5 Feature Unit Descriptor
  177. //
  178. typedef struct _USB_AUDIO_FEATURE_UNIT_DESCRIPTOR {
  179.     UCHAR  bLength;
  180.     UCHAR  bDescriptorType;
  181.     UCHAR  bDescriptorSubtype;
  182.     UCHAR  bUnitID;
  183.     UCHAR  bSourceID;
  184.     UCHAR  bControlSize;
  185.     UCHAR  bmaControls[1];
  186. } USB_AUDIO_FEATURE_UNIT_DESCRIPTOR,
  187. *PUSB_AUDIO_FEATURE_UNIT_DESCRIPTOR;
  188. // 4.3.2.6 Processing Unit Descriptor
  189. //
  190. typedef struct _USB_AUDIO_PROCESSING_UNIT_DESCRIPTOR {
  191.     UCHAR  bLength;
  192.     UCHAR  bDescriptorType;
  193.     UCHAR  bDescriptorSubtype;
  194.     UCHAR  bUnitID;
  195.     USHORT wProcessType;
  196.     UCHAR  bNrInPins;
  197.     UCHAR  baSourceID[1];
  198. } USB_AUDIO_PROCESSING_UNIT_DESCRIPTOR,
  199. *PUSB_AUDIO_PROCESSING_UNIT_DESCRIPTOR;
  200. // 4.3.2.7 Extension Unit Descriptor
  201. //
  202. typedef struct _USB_AUDIO_EXTENSION_UNIT_DESCRIPTOR {
  203.     UCHAR  bLength;
  204.     UCHAR  bDescriptorType;
  205.     UCHAR  bDescriptorSubtype;
  206.     UCHAR  bUnitID;
  207.     USHORT wExtensionCode;
  208.     UCHAR  bNrInPins;
  209.     UCHAR  baSourceID[1];
  210. } USB_AUDIO_EXTENSION_UNIT_DESCRIPTOR,
  211. *PUSB_AUDIO_EXTENSION_UNIT_DESCRIPTOR;
  212. // 4.5.2 Class-Specific AS Interface Descriptor
  213. //
  214. typedef struct _USB_AUDIO_GENERAL_DESCRIPTOR {
  215.     UCHAR  bLength;
  216.     UCHAR  bDescriptorType;
  217.     UCHAR  bDescriptorSubtype;
  218.     UCHAR  bTerminalLink;
  219.     UCHAR  bDelay;
  220.     USHORT wFormatTag;
  221. } USB_AUDIO_GENERAL_DESCRIPTOR,
  222. *PUSB_AUDIO_GENERAL_DESCRIPTOR;
  223. // 4.6.1.2 Class-Specific AS Endpoint Descriptor
  224. //
  225. typedef struct _USB_AUDIO_ENDPOINT_DESCRIPTOR {
  226.     UCHAR  bLength;
  227.     UCHAR  bDescriptorType;
  228.     UCHAR  bDescriptorSubtype;
  229.     UCHAR  bmAttributes;
  230.     UCHAR  bLockDelayUnits;
  231.     USHORT wLockDelay;
  232. } USB_AUDIO_ENDPOINT_DESCRIPTOR,
  233. *PUSB_AUDIO_ENDPOINT_DESCRIPTOR;
  234. //
  235. // USB Device Class Definition for Audio Data Formats
  236. //
  237. typedef struct _USB_AUDIO_COMMON_FORMAT_DESCRIPTOR {
  238.     UCHAR  bLength;
  239.     UCHAR  bDescriptorType;
  240.     UCHAR  bDescriptorSubtype;
  241.     UCHAR  bFormatType;
  242. } USB_AUDIO_COMMON_FORMAT_DESCRIPTOR,
  243. *PUSB_AUDIO_COMMON_FORMAT_DESCRIPTOR;
  244. // 2.1.5 Type I   Format Type Descriptor
  245. // 2.3.1 Type III Format Type Descriptor
  246. //
  247. typedef struct _USB_AUDIO_TYPE_I_OR_III_FORMAT_DESCRIPTOR {
  248.     UCHAR  bLength;
  249.     UCHAR  bDescriptorType;
  250.     UCHAR  bDescriptorSubtype;
  251.     UCHAR  bFormatType;
  252.     UCHAR  bNrChannels;
  253.     UCHAR  bSubframeSize;
  254.     UCHAR  bBitResolution;
  255.     UCHAR  bSamFreqType;
  256. } USB_AUDIO_TYPE_I_OR_III_FORMAT_DESCRIPTOR,
  257. *PUSB_AUDIO_TYPE_I_OR_III_FORMAT_DESCRIPTOR;
  258. // 2.2.6 Type II  Format Type Descriptor
  259. //
  260. typedef struct _USB_AUDIO_TYPE_II_FORMAT_DESCRIPTOR {
  261.     UCHAR  bLength;
  262.     UCHAR  bDescriptorType;
  263.     UCHAR  bDescriptorSubtype;
  264.     UCHAR  bFormatType;
  265.     USHORT wMaxBitRate;
  266.     USHORT wSamplesPerFrame;
  267.     UCHAR  bSamFreqType;
  268. } USB_AUDIO_TYPE_II_FORMAT_DESCRIPTOR,
  269. *PUSB_AUDIO_TYPE_II_FORMAT_DESCRIPTOR;
  270. #pragma pack(pop)