9a25a1bc745651a5886f3977747ffcc6cdbe97a5
[reactos.git] / reactos / include / ddk / usbprotocoldefs.h
1 #pragma once
2
3 #include <pshpack1.h>
4
5 #define USB_UnConnected_Device_Address 0
6 #define USB_UNCONNECTED_ADDRESS(address) ( USB_UnConnected_Device_Address == (address))
7 #define USB_CONNECTED_ADDRESS(address) ( USB_UnConnected_Device_Address != (address) )
8
9 #define PID_OUT 1
10 #define PID_IN 9
11 #define PID_SOF 5
12 #define PID_SETUP 13
13
14 #define PID_DATA0 3
15 #define PID_DATA1 11
16 #define PID_DATA2 7
17 #define PID_MDATA 15
18
19 #define USB_ACK 2
20 #define USB_NAK 10
21 #define USB_STALL 14
22 #define USB_NYET 6
23
24 #define USB_PRE 12
25 #define USB_ERR 12
26 #define USB_SPLIT 8
27 #define USB_PING 4
28
29 #define USB_TIMEOUT 0
30
31 #define USB_SPEC 0x0200
32 #define HID_SPEC 0x0101
33
34 #define USB_20_SPEC 0x0200
35 #define USB_11_SPEC 0x0110
36 #define USB_10_SPEC 0x0100
37
38 #define HID_MAX_PACKET_SIZE0 0x08
39 #define MICROSOFT_VENDOR_ID 0x045E
40 #define HID_DEVICE_RELEASE 0x0100
41
42 #define HID_MAX_PACKET_SIZE 0x0008
43 #define HID_POLLING_INTERVAL 0x0A
44 #define MAX_POLLING_INTERVAL 0xFF
45
46 #define USB_DEFAULT_KEYBOARD_PRODUCT_ID 0x000B
47 #define USB_DEFAULT_MOUSE_PRODUCT_ID 0x0040
48
49 #define DEVICE_DESCRIPTOR 0x01
50 #define CONFIGURATION_DESCRIPTOR 0x02
51 #define STRING_DESCRIPTOR 0x03
52 #define INTERFACE_DESCRIPTOR 0x04
53 #define ENDPOINT_DESCRIPTOR 0x05
54 #define QUALIFIER_DESCRIPTOR 0x06
55 #define OTHER_SPEED_DESCRIPTOR 0x07
56 #define INTERFACE_POWER_DESCRIPTOR 0x08
57
58 #define HID_DESCRIPTOR 0x21
59 #define REPORT_DESCRIPTOR 0x22
60 #define PHYSICAL_DESCRIPTOR 0x23
61 #define HUB_DESCRIPTOR 0x29
62
63 #define USB_DESCRIPTOR_TYPE_STD 0
64 #define USB_DESCRIPTOR_TYPE_CLASS 1
65 #define USB_DESCRIPTOR_TYPE_VENDOR 2
66 #define USB_DESCRIPTOR_TYPE_RESERVED 3
67
68 #define DIR_HOST_TO_DEVICE 0
69 #define DIR_DEVICE_TO_HOST 1
70
71 #define TYPE_STANDARD 0
72 #define TYPE_CLASS 1
73 #define TYPE_VENDOR 2
74 #define TYPE_RESERVED 3
75
76 #define RCPT_DEVICE 0
77 #define RCPT_INTERFACE 1
78 #define RCPT_ENDPOINT 2
79 #define RCPT_OTHER 3
80 #define RCPT_PORT 4
81 #define RCPT_RPIPE 5
82
83 #if !defined(MIDL_PASS)
84 #define USB_MAKE_REQUEST_TYPE(direction, type, recipient) (BYTE)( ((BYTE)direction << 7) | ((BYTE)type << 5) | ((BYTE)recipient & 0x07) )
85 #endif
86
87 #define GET_STATUS 0
88 #define CLEAR_FEATURE 1
89 #define SET_FEATURE 3
90 #define SET_ADDRESS 5
91 #define GET_DESCRIPTOR 6
92 #define SET_DESCRIPTOR 7
93 #define GET_CONFIGURATION 8
94 #define SET_CONFIGURATION 9
95 #define GET_INTERFACE 10
96 #define SET_INTERFACE 11
97 #define SYNCH_FRAME 12
98
99 #define USB_BULK_ONLY_MASS_STG_RESET 0xFF
100 #define USB_BULK_ONLY_MASS_STG_GET_MAX_LUN 0xFE
101
102 #define GET_REPORT 0x01
103 #define GET_IDLE 0x02
104 #define GET_PROTOCOL 0x03
105 #define SET_REPORT 0x09
106 #define SET_IDLE 0x0A
107 #define SET_PROTOCOL 0x0B
108
109 #define ADD_MMC_IE 20
110 #define REMOVE_MMC_IE 21
111 #define SET_NUM_DNTS 22
112 #define SET_CLUSTER_ID 23
113 #define SET_DEVICE_INFO 24
114 #define GET_TIME 25
115 #define SET_STREAM_INDEX 26
116 #define SET_WUSB_MAS 27
117 #define WUSB_CH_STOP 28
118
119 #define EXEC_RC_CMD 40
120
121 #define TIME_ADJ 0x01
122 #define TIME_BPST 0x02
123 #define TIME_WUSB 0x03
124
125 #define HID_REPORT_TYPE_INPUT 0x01
126 #define HID_REPORT_TYPE_OUTPUT 0x02
127 #define HID_REPORT_TYPE_FEATURE 0x03
128
129 #define HID_PROTOCOL_TYPE_BOOT 0x00
130 #define HID_PROTOCOL_TYPE_REPORT 0x01
131
132 #define HUB_DEVICE_PROTOCOL_1X 0
133 #define HUB_DEVICE_PROTOCOL_SINGLE_TT 1
134 #define HUB_DEVICE_PROTOCOL_MULTI_TT 2
135
136 #define HUB_INTERFACE_PROTOCOL_1X 0
137 #define HUB_INTERFACE_PROTOCOL_SINGLE_TT 0
138 #define HUB_INTERFACE_PROTOCOL_MULTI_TT_IN_SINGLE_TT_MODE 1
139 #define HUB_INTERFACE_PROTOCOL_MULTI_TT_IN_MULTI_TT_MODE 2
140
141 #define CLEAR_TT_BUFFER 8
142 #define RESET_TT 9
143 #define GET_TT_STATE 10
144 #define STOP_TT 11
145
146 #define C_HUB_LOCAL_POWER 0
147 #define C_HUB_OVER_CURRENT 1
148 #define PORT_CONNECTION 0
149 #define PORT_ENABLE 1
150 #define PORT_SUSPEND 2
151 #define PORT_OVER_CURRENT 3
152 #define PORT_RESET 4
153 #define PORT_POWER 8
154 #define PORT_LOW_SPEED 9
155 #define C_PORT_CONNECTION 16
156 #define C_PORT_ENABLE 17
157 #define C_PORT_SUSPEND 18
158 #define C_PORT_OVER_CURRENT 19
159 #define C_PORT_RESET 20
160 #define PORT_TEST 21
161 #define PORT_INDICATOR 22
162
163 #define USBSETUPSIZE 8
164 #define USBINREQUEST 128
165
166 #define BM_GET_DEVICE 128
167 #define BM_GET_INTERFACE 129
168 #define BM_GET_ENDPOINT 130
169
170 #define BM_SET_DEVICE 0
171 #define BM_SET_INTERFACE 1
172 #define BM_SET_ENDPOINT 2
173
174 #define HALT_ENDPOINT 0
175 #define REMOTE_WAKEUP 1
176 #define TEST_MODE 2
177
178 #define DEVICE_DESCRIPTION_TYPE 0x100
179 #define QUALIFIER_DESCRIPTION_TYPE 0x600
180 #define OTHER_SPEED_DESCRIPTION_TYPE 0x700
181 #define CONFIG_DESCRIPTION_TYPE 0x200
182 #define STRING_DESCRIPTION_TYPE 0x300
183 #define MSOS_DESCRIPTION_TYPE 0x3EE
184
185 #define CONFIG_BUS_POWERED 0x80
186 #define CONFIG_SELF_POWERED 0x40
187 #define CONFIG_REMOTE_WAKEUP 0x20
188
189 #define USB_WA_MULTIFUNCTION 0x02
190 #define USB_WA_PROTOCOL 0x01
191 #define USB_RADIO_CONTROL 0x2
192
193 #define USB_HID_CLASS_CODE 0x03
194 #define USB_MASS_STORAGE_CLASS_CODE 0x08
195 #define USB_HUB_CLASS_CODE 0x09
196 #define USB_MISCELLANEOUS 0xEF
197 #define USB_WIRELESS_WA 0xE0
198
199 #define BOOT_INTERFACE_SUBCLASS 0x01
200 #define COMMON_CLASS 0x02
201 #define USB_RF_CONTROL 0x01
202
203 #define PROTOCOL_NONE 0x00
204 #define PROTOCOL_KEYBOARD 0x01
205 #define PROTOCOL_MOUSE 0x02
206
207 #define EP_OUT 0
208 #define EP_IN 1
209
210 #define MAKE_ENDPOINT_ADDRESS(num, dir) ( ((BYTE)(dir) << 7) | ((BYTE)(num) & 0x0F) )
211
212 #define ENDPOINT_TYPE 0x03
213 #define CONTROL_ENDPOINT 0
214 #define ISOCHRONOUS_ENDPOINT 1
215 #define BULK_ENDPOINT 2
216 #define INTERRUPT_ENDPOINT 3
217
218 typedef union _USBDESCRIPTORTYPE {
219 BYTE Byte;
220 #if !defined(MIDL_PASS)
221 struct Bits {
222 BYTE Descriptor:5;
223 BYTE Type:2;
224 BYTE Reserved:1;
225 } Bits;
226 #endif
227 } USBDESCRIPTORTYPE;
228
229 typedef union _USBCONFIGATTRIBS {
230 BYTE Byte;
231 #if !defined(MIDL_PASS)
232 struct Bits {
233 BYTE bReserved0_4:5;
234 BYTE bRemoteWakeup:1;
235 BYTE bSelfPowered:1;
236 BYTE bReserved7:1;
237 } Bits;
238 #endif
239 } USBCONFIGATTRIBS;
240
241 typedef union _USBREQUESTTYPE {
242 BYTE Byte;
243 #if !defined(MIDL_PASS)
244 struct Bits {
245 BYTE Recipient:5;
246 BYTE Type:2;
247 BYTE Direction:1;
248 } Bits;
249 #endif
250 } USBREQUESTTYPE;
251
252 #if !defined(MIDL_PASS)
253 C_ASSERT((sizeof(USBREQUESTTYPE) == sizeof(BYTE)));
254 #endif
255
256 typedef struct _USBSETUPREQUEST {
257 USBREQUESTTYPE bmRequestType;
258 BYTE bRequest;
259 SHORT sSetupValue;
260 SHORT sSetupIndex;
261 SHORT sSetupLength;
262 } USBSETUPREQUEST;
263
264 #if !defined(MIDL_PASS)
265
266 typedef struct _USBDEVICEDESC {
267 BYTE bLength;
268 BYTE bDescriptorType;
269 USHORT usUSB;
270 BYTE bDeviceClass;
271 BYTE bDeviceSubClass;
272 BYTE bProtocol;
273 BYTE bMaxPacket0;
274 USHORT usVendor;
275 USHORT usProduct;
276 USHORT usDeviceNumber;
277 BYTE bManufacturer;
278 BYTE bProductDesc;
279 BYTE bSerialNumber;
280 BYTE bNumConfigs;
281 } USBDEVICEDESC;
282
283 typedef struct _USBCONFIGDESC {
284 BYTE bLength;
285 BYTE bDescriptorType;
286 USHORT usTotalLength;
287 BYTE bNumInterfaces;
288 BYTE bConfigValue;
289 BYTE bConfig;
290 BYTE bAttributes;
291 BYTE bMaxPower;
292 } USBCONFIGDESC;
293
294
295 typedef struct _USBINTERFACEDESC {
296 BYTE bLength;
297 BYTE bDescriptorType;
298 BYTE bInterfaceNumber;
299 BYTE bAlternateSetting;
300 BYTE bNumEndpoints;
301 BYTE bClass;
302 BYTE bSubClass;
303 BYTE bProtocol;
304 BYTE bDescription;
305 } USBINTERFACEDESC;
306
307 #define ENDPOINT_DIRECTION_OUT 0
308 #define ENDPOINT_DIRECTION_IN 1
309
310 typedef union _USBENDPOINTADDRESS {
311 BYTE Byte;
312 struct Bits {
313 BYTE Number:4;
314 BYTE Reserved:3;
315 BYTE Direction:1;
316 } Bits;
317 } USBENDPOINTADDRESS;
318
319 C_ASSERT((sizeof(USBENDPOINTADDRESS) == sizeof(BYTE)));
320
321 #define USB_TRANSFER_TYPE_CONTROL 0
322 #define USB_TRANSFER_TYPE_ISOCH 1
323 #define USB_TRANSFER_TYPE_BULK 2
324 #define USB_TRANSFER_TYPE_INTERRUPT 3
325
326 #define USB_SYNC_TYPE_NONE 0
327 #define USB_SYNC_TYPE_ASYNC 1
328 #define USB_SYNC_TYPE_ADAPTIVE 2
329 #define USB_SYNC_TYPE_SYNC 3
330
331 #define USB_USAGE_TYPE_DATA 0
332 #define USB_USAGE_TYPE_FEEDBACK 1
333 #define USB_USAGE_TYPE_IMPLICIT 2
334 #define USB_USAGE_TYPE_RESERVED 3
335
336 typedef union _USBENDPOINTATTRIBS {
337 BYTE Byte;
338 struct Bits {
339 BYTE TransferType:2;
340 BYTE SyncType:2;
341 BYTE UsageType:2;
342 BYTE Reserved:2;
343 } Bits;
344 } USBENDPOINTATTRIBS;
345
346 C_ASSERT((sizeof(USBENDPOINTATTRIBS) == sizeof(BYTE)));
347
348 typedef union _USBMAXPACKET {
349 WORD Word;
350 struct Bits {
351 WORD Size:11;
352 WORD AdditionalXactions:2;
353 WORD Reserved:3;
354 } Bits;
355 } USBMAXPACKET;
356
357 C_ASSERT((sizeof(USBMAXPACKET) == sizeof(WORD)));
358
359 typedef struct _USBENDPOINTDESC {
360 BYTE bLength;
361 BYTE bDescriptorType;
362 USBENDPOINTADDRESS Address;
363 USBENDPOINTATTRIBS Attributes;
364 USBMAXPACKET MaxPacket;
365 BYTE bInterval;
366 } USBENDPOINTDESC;
367
368 typedef struct _USBQUALIFIERDESC {
369 BYTE bLength;
370 BYTE bDescriptorType;
371 USHORT usUSB;
372 BYTE bDeviceClass;
373 BYTE bDeviceSubClass;
374 BYTE bProtocol;
375 BYTE bMaxPacket;
376 BYTE bNumConfigs;
377 BYTE bReserved;
378 } USBQUALIFIERDESC;
379
380 typedef struct _USBSTRINGDESC {
381 BYTE bLength;
382 BYTE bDescriptorType;
383 WCHAR wchData[1];
384 } USBSTRINGDESC;
385
386 typedef struct _USBSTRINGLANGIDS {
387 BYTE bLength;
388 BYTE bDescriptorType;
389 WORD wLANGIDs[1];
390 } USBSTRINGLANGIDS;
391
392 typedef struct _USBHIDSTANDARDDESC {
393 BYTE bLength;
394 BYTE bDescriptorType;
395 USHORT bcdHID;
396 BYTE bCountryCode;
397 BYTE bNumDescriptors;
398 } USBHIDSTANDARDDESC;
399
400 typedef struct _USBHIDOPTIONALDESC {
401 BYTE bClassDescriptorType;
402 USHORT usDescriptorLength;
403 } USBHIDOPTIONALDESC;
404
405 typedef struct _USBPHYSICALDESCSET0 {
406 BYTE bNumber;
407 BYTE bLength;
408 } USBPHYSICALDESCSET0;
409
410 typedef union _USBPHYSICALDESCSET {
411 BYTE bPhysicalInfo;
412 struct Bits {
413 BYTE bPreference:5;
414 BYTE bBias:3;
415 } Bits;
416 } USBPHYSICALDESCSET;
417
418 typedef struct _USBPHYSICALDESCITEM {
419 BYTE bDesignator;
420 union Flags {
421 BYTE bFlags;
422 struct Bits {
423 BYTE bEffort:5;
424 BYTE bQualifier:3;
425 } Bits;
426 } Flags;
427 } USBPHYSICALDESCITEM;
428
429 typedef union _USBHUBCHARACTERISTICS {
430 WORD wHubCharacteristics;
431 struct Bits {
432 BYTE bLogicalPowerSwitchingMode:2;
433 BYTE fCompoundDevice:1;
434 BYTE bOverCurrentMode:2;
435 BYTE bTTThinkTime:2;
436 BYTE fPortIndicatorSupport:1;
437 BYTE bReserved:8;
438 } Bits;
439 } USBHUBCHARACTERISTICS;
440
441 #if !defined(MIDL_PASS)
442 C_ASSERT((sizeof(USBHUBCHARACTERISTICS) == sizeof(WORD)));
443 #endif
444
445 typedef struct _USBHUBDESC {
446 BYTE bLength;
447 BYTE bDescriptorType;
448 BYTE bNumberOfPorts;
449 USBHUBCHARACTERISTICS Characteristics;
450 BYTE bPwrOn2PwrGood;
451 BYTE bHubContrCurrent;
452 BYTE bDeviceRemovable[32];
453 BYTE bPortPwrCtrlMask[32];
454 } USBHUBDESC;
455
456 #if !defined(MIDL_PASS)
457 C_ASSERT((sizeof(USBHUBDESC) == 71));
458 #endif
459
460 typedef union _USBHUBPORTSTATUS {
461 WORD wPortStatus;
462 struct Bits {
463 BYTE fCurrentConnectionStatus:1;
464 BYTE fEnabled:1;
465 BYTE fSuspend:1;
466 BYTE fOverCurrent:1;
467 BYTE fReset:1;
468 BYTE bReserved1:3;
469 BYTE fPortPower:1;
470 BYTE fLowSpeedDevice:1;
471 BYTE fHighSpeedDevice:1;
472 BYTE fTestMode:1;
473 BYTE fPortIndicatorControl:1;
474 BYTE bReserved2:3;
475 } Bits;
476 } USBHUBPORTSTATUS;
477
478 #if !defined(MIDL_PASS)
479 C_ASSERT((sizeof(USBHUBPORTSTATUS) == sizeof(WORD)));
480 #endif
481
482 typedef union _USBHUBPORTSTATUSCHANGE {
483 WORD wPortStatusChange;
484 struct Bits {
485 BYTE fConnectionStatusChange:1;
486 BYTE fEnabledChange:1;
487 BYTE fSuspendChange:1;
488 BYTE fOverCurrentChange:1;
489 BYTE fResetChange:1;
490 BYTE bReserved1:3;
491 BYTE bReserved2:8;
492 } Bits;
493 } USBHUBPORTSTATUSCHANGE;
494
495 #if !defined(MIDL_PASS)
496 C_ASSERT((sizeof(USBHUBPORTSTATUSCHANGE) == sizeof(WORD)));
497 #endif
498
499 typedef struct _USBHUBPORTDATA {
500 USBHUBPORTSTATUS PortStatus;
501 USBHUBPORTSTATUSCHANGE PortStatusChange;
502 } USBHUBPORTDATA;
503
504 #define USB_MAKE_LANGID(lang, sublang) ((((USHORT)(sublang)) << 10) | (USHORT)(lang))
505
506 #define USB_LANG_RESERVED 0x00
507 #define USB_LANG_ARABIC 0x01
508 #define USB_LANG_BULGARIAN 0x02
509 #define USB_LANG_CATALAN 0x03
510 #define USB_LANG_CHINESE 0x04
511 #define USB_LANG_CZECH 0x05
512 #define USB_LANG_DANISH 0x06
513 #define USB_LANG_GERMAN 0x07
514 #define USB_LANG_GREEK 0x08
515 #define USB_LANG_ENGLISH 0x09
516 #define USB_LANG_SPANISH 0x0a
517 #define USB_LANG_FINNISH 0x0b
518 #define USB_LANG_FRENCH 0x0c
519 #define USB_LANG_HEBREW 0x0d
520 #define USB_LANG_HUNGARIAN 0x0e
521 #define USB_LANG_ICELANDIC 0x0f
522 #define USB_LANG_ITALIAN 0x10
523 #define USB_LANG_JAPANESE 0x11
524 #define USB_LANG_KOREAN 0x12
525 #define USB_LANG_DUTCH 0x13
526 #define USB_LANG_NORWEGIAN 0x14
527 #define USB_LANG_POLISH 0x15
528 #define USB_LANG_PORTUGUESE 0x16
529 #define USB_LANG_ROMANIAN 0x18
530 #define USB_LANG_RUSSIAN 0x19
531 #define USB_LANG_CROATIAN 0x1a
532 #define USB_LANG_SERBIAN 0x1a
533 #define USB_LANG_SLOVAK 0x1b
534 #define USB_LANG_ALBANIAN 0x1c
535 #define USB_LANG_SWEDISH 0x1d
536 #define USB_LANG_THAI 0x1e
537 #define USB_LANG_TURKISH 0x1f
538 #define USB_LANG_URDU 0x20
539 #define USB_LANG_INDONESIAN 0x21
540 #define USB_LANG_UKRANIAN 0x22
541 #define USB_LANG_BELARUSIAN 0x23
542 #define USB_LANG_SLOVENIAN 0x24
543 #define USB_LANG_ESTONIAN 0x25
544 #define USB_LANG_LATVIAN 0x26
545 #define USB_LANG_LITHUANIAN 0x27
546 #define USB_LANG_FARSI 0x29
547 #define USB_LANG_VIETNAMESE 0x2a
548 #define USB_LANG_ARMENIAN 0x2b
549 #define USB_LANG_AZERI 0x2c
550 #define USB_LANG_BASQUE 0x2d
551 #define USB_LANG_MACEDONIAN 0x2f
552 #define USB_LANG_AFRIKAANS 0x36
553 #define USB_LANG_GEORGIAN 0x37
554 #define USB_LANG_FAEROESE 0x38
555 #define USB_LANG_HINDI 0x39
556 #define USB_LANG_MALAY 0x3e
557 #define USB_LANG_KAZAK 0x3f
558 #define USB_LANG_SWAHILI 0x41
559 #define USB_LANG_UZBEK 0x43
560 #define USB_LANG_TATAR 0x44
561 #define USB_LANG_BENGALI 0x45
562 #define USB_LANG_PUNJABI 0x46
563 #define USB_LANG_GUJARATI 0x47
564 #define USB_LANG_ORIYA 0x48
565 #define USB_LANG_TAMIL 0x49
566 #define USB_LANG_TELUGU 0x4a
567 #define USB_LANG_KANNADA 0x4b
568 #define USB_LANG_MALAYALAM 0x4c
569 #define USB_LANG_ASSAMESE 0x4d
570 #define USB_LANG_MARATHI 0x4e
571 #define USB_LANG_SANSKRIT 0x4f
572 #define USB_LANG_KONKANI 0x57
573 #define USB_LANG_MANIPURI 0x58
574 #define USB_LANG_SINDHI 0x59
575 #define USB_LANG_KASHMIRI 0x60
576 #define USB_LANG_NEPALI 0x61
577 #define USB_LANG_HID 0xff
578
579 #define USB_SUBLANG_ARABIC_SAUDI_ARABIA 0x01
580 #define USB_SUBLANG_ARABIC_SAUDI_ARABIA 0x01
581 #define USB_SUBLANG_ARABIC_IRAQ 0x02
582 #define USB_SUBLANG_ARABIC_EGYPT 0x03
583 #define USB_SUBLANG_ARABIC_LIBYA 0x04
584 #define USB_SUBLANG_ARABIC_ALGERIA 0x05
585 #define USB_SUBLANG_ARABIC_MOROCCO 0x06
586 #define USB_SUBLANG_ARABIC_TUNISIA 0x07
587 #define USB_SUBLANG_ARABIC_OMAN 0x08
588 #define USB_SUBLANG_ARABIC_YEMEN 0x09
589 #define USB_SUBLANG_ARABIC_SYRIA 0x10
590 #define USB_SUBLANG_ARABIC_JORDAN 0x11
591 #define USB_SUBLANG_ARABIC_LEBANON 0x12
592 #define USB_SUBLANG_ARABIC_KUWAIT 0x13
593 #define USB_SUBLANG_ARABIC_UAE 0x14
594 #define USB_SUBLANG_ARABIC_BAHRAIN 0x15
595 #define USB_SUBLANG_ARABIC_QATAR 0x16
596 #define USB_SUBLANG_AZERI_CYRILLIC 0x01
597 #define USB_SUBLANG_AZERI_LATIN 0x02
598 #define USB_SUBLANG_CHINESE_TRADITIONAL 0x01
599 #define USB_SUBLANG_CHINESE_SIMPLIFIED 0x02
600 #define USB_SUBLANG_CHINESE_HONGKONG 0x03
601 #define USB_SUBLANG_CHINESE_SINGAPORE 0x04
602 #define USB_SUBLANG_CHINESE_MACAU 0x05
603 #define USB_SUBLANG_DUTCH 0x01
604 #define USB_SUBLANG_DUTCH_BELGIAN 0x02
605 #define USB_SUBLANG_ENGLISH_US 0x01
606 #define USB_SUBLANG_ENGLISH_UK 0x02
607 #define USB_SUBLANG_ENGLISH_AUS 0x03
608 #define USB_SUBLANG_ENGLISH_CAN 0x04
609 #define USB_SUBLANG_ENGLISH_NZ 0x05
610 #define USB_SUBLANG_ENGLISH_EIRE 0x06
611 #define USB_SUBLANG_ENGLISH_SOUTH_AFRICA 0x07
612 #define USB_SUBLANG_ENGLISH_JAMAICA 0x08
613 #define USB_SUBLANG_ENGLISH_CARIBBEAN 0x09
614 #define USB_SUBLANG_ENGLISH_BELIZE 0x0a
615 #define USB_SUBLANG_ENGLISH_TRINIDAD 0x0b
616 #define USB_SUBLANG_ENGLISH_PHILIPPINES 0x0c
617 #define USB_SUBLANG_ENGLISH_ZIMBABWE 0x0d
618 #define USB_SUBLANG_FRENCH 0x01
619 #define USB_SUBLANG_FRENCH_BELGIAN 0x02
620 #define USB_SUBLANG_FRENCH_CANADIAN 0x03
621 #define USB_SUBLANG_FRENCH_SWISS 0x04
622 #define USB_SUBLANG_FRENCH_LUXEMBOURG 0x05
623 #define USB_SUBLANG_FRENCH_MONACO 0x06
624 #define USB_SUBLANG_GERMAN 0x01
625 #define USB_SUBLANG_GERMAN_SWISS 0x02
626 #define USB_SUBLANG_GERMAN_AUSTRIAN 0x03
627 #define USB_SUBLANG_GERMAN_LUXEMBOURG 0x04
628 #define USB_SUBLANG_GERMAN_LIECHTENSTEIN 0x05
629 #define USB_SUBLANG_ITALIAN 0x01
630 #define USB_SUBLANG_ITALIAN_SWISS 0x02
631 #define USB_SUBLANG_KASHMIRI_INDIA 0x02
632 #define USB_SUBLANG_KOREAN 0x01
633 #define USB_SUBLANG_LITHUANIAN 0x01
634 #define USB_SUBLANG_MALAY_MALAYSIA 0x01
635 #define USB_SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02
636 #define USB_SUBLANG_NEPALI_INDIA 0x02
637 #define USB_SUBLANG_NORWEGIAN_BOKMAL 0x01
638 #define USB_SUBLANG_NORWEGIAN_NYNORSK 0x02
639 #define USB_SUBLANG_PORTUGUESE 0x01
640 #define USB_SUBLANG_PORTUGUESE_BRAZILIAN 0x02
641 #define USB_SUBLANG_SERBIAN_LATIN 0x02
642 #define USB_SUBLANG_SERBIAN_CYRILLIC 0x03
643 #define USB_SUBLANG_SPANISH 0x01
644 #define USB_SUBLANG_SPANISH_MEXICAN 0x02
645 #define USB_SUBLANG_SPANISH_MODERN 0x03
646 #define USB_SUBLANG_SPANISH_GUATEMALA 0x04
647 #define USB_SUBLANG_SPANISH_COSTA_RICA 0x05
648 #define USB_SUBLANG_SPANISH_PANAMA 0x06
649 #define USB_SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07
650 #define USB_SUBLANG_SPANISH_VENEZUELA 0x08
651 #define USB_SUBLANG_SPANISH_COLOMBIA 0x09
652 #define USB_SUBLANG_SPANISH_PERU 0x0a
653 #define USB_SUBLANG_SPANISH_ARGENTINA 0x0b
654 #define USB_SUBLANG_SPANISH_ECUADOR 0x0c
655 #define USB_SUBLANG_SPANISH_CHILE 0x0d
656 #define USB_SUBLANG_SPANISH_URUGUAY 0x0e
657 #define USB_SUBLANG_SPANISH_PARAGUAY 0x0f
658 #define USB_SUBLANG_SPANISH_BOLIVIA 0x10
659 #define USB_SUBLANG_SPANISH_EL_SALVADOR 0x11
660 #define USB_SUBLANG_SPANISH_HONDURAS 0x12
661 #define USB_SUBLANG_SPANISH_NICARAGUA 0x13
662 #define USB_SUBLANG_SPANISH_PUERTO_RICO 0x14
663 #define USB_SUBLANG_SWEDISH 0x01
664 #define USB_SUBLANG_SWEDISH_FINLAND 0x02
665 #define USB_SUBLANG_URDU_PAKISTAN 0x01
666 #define USB_SUBLANG_URDU_INDIA 0x02
667 #define USB_SUBLANG_UZBEK_LATIN 0x01
668 #define USB_SUBLANG_UZBEK_CYRILLIC 0x02
669 #define USB_SUBLANG_HID_USAGE_DATA_DESCRIPTOR 0x01
670 #define USB_SUBLANG_HID_VENDOR_DEFINED_1 0x3c
671 #define USB_SUBLANG_HID_VENDOR_DEFINED_2 0x3d
672 #define USB_SUBLANG_HID_VENDOR_DEFINED_3 0x3e
673 #define USB_SUBLANG_HID_VENDOR_DEFINED_4 0x3f
674
675 #endif // !defined(MIDL_PASS)
676
677 #include <poppack.h>