VirtualBox

source: vbox/trunk/src/VBox/HostDrivers/VBoxUSB/win/usbdesc.h@ 36657

Last change on this file since 36657 was 31896, checked in by vboxsync, 14 years ago

export the VBoxUSB host driver to OSE

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

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette