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) )
31
#define USB_SPEC 0x0200
32
#define HID_SPEC 0x0101
34
#define USB_20_SPEC 0x0200
35
#define USB_11_SPEC 0x0110
36
#define USB_10_SPEC 0x0100
38
#define HID_MAX_PACKET_SIZE0 0x08
39
#define MICROSOFT_VENDOR_ID 0x045E
40
#define HID_DEVICE_RELEASE 0x0100
42
#define HID_MAX_PACKET_SIZE 0x0008
43
#define HID_POLLING_INTERVAL 0x0A
44
#define MAX_POLLING_INTERVAL 0xFF
46
#define USB_DEFAULT_KEYBOARD_PRODUCT_ID 0x000B
47
#define USB_DEFAULT_MOUSE_PRODUCT_ID 0x0040
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
58
#define HID_DESCRIPTOR 0x21
59
#define REPORT_DESCRIPTOR 0x22
60
#define PHYSICAL_DESCRIPTOR 0x23
61
#define HUB_DESCRIPTOR 0x29
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
68
#define DIR_HOST_TO_DEVICE 0
69
#define DIR_DEVICE_TO_HOST 1
71
#define TYPE_STANDARD 0
74
#define TYPE_RESERVED 3
77
#define RCPT_INTERFACE 1
78
#define RCPT_ENDPOINT 2
83
#if !defined(MIDL_PASS)
84
#define USB_MAKE_REQUEST_TYPE(direction, type, recipient) \
85
(BYTE)( ((BYTE)direction << 7) | \
86
((BYTE)type << 5) | ((BYTE)recipient & 0x07) )
90
#define CLEAR_FEATURE 1
93
#define GET_DESCRIPTOR 6
94
#define SET_DESCRIPTOR 7
95
#define GET_CONFIGURATION 8
96
#define SET_CONFIGURATION 9
97
#define GET_INTERFACE 10
98
#define SET_INTERFACE 11
99
#define SYNCH_FRAME 12
101
#define USB_BULK_ONLY_MASS_STG_RESET 0xFF
102
#define USB_BULK_ONLY_MASS_STG_GET_MAX_LUN 0xFE
104
#define GET_REPORT 0x01
105
#define GET_IDLE 0x02
106
#define GET_PROTOCOL 0x03
107
#define SET_REPORT 0x09
108
#define SET_IDLE 0x0A
109
#define SET_PROTOCOL 0x0B
111
#define ADD_MMC_IE 20
112
#define REMOVE_MMC_IE 21
113
#define SET_NUM_DNTS 22
114
#define SET_CLUSTER_ID 23
115
#define SET_DEVICE_INFO 24
117
#define SET_STREAM_INDEX 26
118
#define SET_WUSB_MAS 27
119
#define WUSB_CH_STOP 28
121
#define EXEC_RC_CMD 40
123
#define TIME_ADJ 0x01
124
#define TIME_BPST 0x02
125
#define TIME_WUSB 0x03
127
#define HID_REPORT_TYPE_INPUT 0x01
128
#define HID_REPORT_TYPE_OUTPUT 0x02
129
#define HID_REPORT_TYPE_FEATURE 0x03
131
#define HID_PROTOCOL_TYPE_BOOT 0x00
132
#define HID_PROTOCOL_TYPE_REPORT 0x01
134
#define HUB_DEVICE_PROTOCOL_1X 0
135
#define HUB_DEVICE_PROTOCOL_SINGLE_TT 1
136
#define HUB_DEVICE_PROTOCOL_MULTI_TT 2
138
#define HUB_INTERFACE_PROTOCOL_1X 0
139
#define HUB_INTERFACE_PROTOCOL_SINGLE_TT 0
140
#define HUB_INTERFACE_PROTOCOL_MULTI_TT_IN_SINGLE_TT_MODE 1
141
#define HUB_INTERFACE_PROTOCOL_MULTI_TT_IN_MULTI_TT_MODE 2
143
#define CLEAR_TT_BUFFER 8
145
#define GET_TT_STATE 10
148
#define C_HUB_LOCAL_POWER 0
149
#define C_HUB_OVER_CURRENT 1
150
#define PORT_CONNECTION 0
151
#define PORT_ENABLE 1
152
#define PORT_SUSPEND 2
153
#define PORT_OVER_CURRENT 3
156
#define PORT_LOW_SPEED 9
157
#define C_PORT_CONNECTION 16
158
#define C_PORT_ENABLE 17
159
#define C_PORT_SUSPEND 18
160
#define C_PORT_OVER_CURRENT 19
161
#define C_PORT_RESET 20
163
#define PORT_INDICATOR 22
165
#define USBSETUPSIZE 8
166
#define USBINREQUEST 128
168
#define BM_GET_DEVICE 128
169
#define BM_GET_INTERFACE 129
170
#define BM_GET_ENDPOINT 130
172
#define BM_SET_DEVICE 0
173
#define BM_SET_INTERFACE 1
174
#define BM_SET_ENDPOINT 2
176
#define HALT_ENDPOINT 0
177
#define REMOTE_WAKEUP 1
180
#define DEVICE_DESCRIPTION_TYPE 0x100
181
#define QUALIFIER_DESCRIPTION_TYPE 0x600
182
#define OTHER_SPEED_DESCRIPTION_TYPE 0x700
183
#define CONFIG_DESCRIPTION_TYPE 0x200
184
#define STRING_DESCRIPTION_TYPE 0x300
185
#define MSOS_DESCRIPTION_TYPE 0x3EE
187
#define CONFIG_BUS_POWERED 0x80
188
#define CONFIG_SELF_POWERED 0x40
189
#define CONFIG_REMOTE_WAKEUP 0x20
191
#define USB_WA_MULTIFUNCTION 0x02
192
#define USB_WA_PROTOCOL 0x01
193
#define USB_RADIO_CONTROL 0x2
195
#define USB_HID_CLASS_CODE 0x03
196
#define USB_MASS_STORAGE_CLASS_CODE 0x08
197
#define USB_HUB_CLASS_CODE 0x09
198
#define USB_MISCELLANEOUS 0xEF
199
#define USB_WIRELESS_WA 0xE0
201
#define BOOT_INTERFACE_SUBCLASS 0x01
202
#define COMMON_CLASS 0x02
203
#define USB_RF_CONTROL 0x01
205
#define PROTOCOL_NONE 0x00
206
#define PROTOCOL_KEYBOARD 0x01
207
#define PROTOCOL_MOUSE 0x02
212
#define MAKE_ENDPOINT_ADDRESS(num, dir) \
213
( ((BYTE)(dir) << 7) | ((BYTE)(num) & 0x0F) )
215
#define ENDPOINT_TYPE 0x03
216
#define CONTROL_ENDPOINT 0
217
#define ISOCHRONOUS_ENDPOINT 1
218
#define BULK_ENDPOINT 2
219
#define INTERRUPT_ENDPOINT 3
221
typedef union _USBDESCRIPTORTYPE {
223
#if !defined(MIDL_PASS)
232
typedef union _USBCONFIGATTRIBS {
234
#if !defined(MIDL_PASS)
237
BYTE bRemoteWakeup:1;
244
typedef union _USBREQUESTTYPE {
246
#if !defined(MIDL_PASS)
255
#if !defined(MIDL_PASS)
256
C_ASSERT((sizeof(USBREQUESTTYPE) == sizeof(BYTE)));
259
typedef struct _USBSETUPREQUEST {
260
USBREQUESTTYPE bmRequestType;
267
#if !defined(MIDL_PASS)
269
typedef struct _USBDEVICEDESC {
271
BYTE bDescriptorType;
274
BYTE bDeviceSubClass;
279
USHORT usDeviceNumber;
286
typedef struct _USBCONFIGDESC {
288
BYTE bDescriptorType;
289
USHORT usTotalLength;
298
typedef struct _USBINTERFACEDESC {
300
BYTE bDescriptorType;
301
BYTE bInterfaceNumber;
302
BYTE bAlternateSetting;
310
#define ENDPOINT_DIRECTION_OUT 0
311
#define ENDPOINT_DIRECTION_IN 1
313
typedef union _USBENDPOINTADDRESS {
320
} USBENDPOINTADDRESS;
322
C_ASSERT((sizeof(USBENDPOINTADDRESS) == sizeof(BYTE)));
324
#define USB_TRANSFER_TYPE_CONTROL 0
325
#define USB_TRANSFER_TYPE_ISOCH 1
326
#define USB_TRANSFER_TYPE_BULK 2
327
#define USB_TRANSFER_TYPE_INTERRUPT 3
329
#define USB_SYNC_TYPE_NONE 0
330
#define USB_SYNC_TYPE_ASYNC 1
331
#define USB_SYNC_TYPE_ADAPTIVE 2
332
#define USB_SYNC_TYPE_SYNC 3
334
#define USB_USAGE_TYPE_DATA 0
335
#define USB_USAGE_TYPE_FEEDBACK 1
336
#define USB_USAGE_TYPE_IMPLICIT 2
337
#define USB_USAGE_TYPE_RESERVED 3
339
typedef union _USBENDPOINTATTRIBS {
347
} USBENDPOINTATTRIBS;
349
C_ASSERT((sizeof(USBENDPOINTATTRIBS) == sizeof(BYTE)));
351
typedef union _USBMAXPACKET {
355
WORD AdditionalXactions:2;
360
C_ASSERT((sizeof(USBMAXPACKET) == sizeof(WORD)));
362
typedef struct _USBENDPOINTDESC {
364
BYTE bDescriptorType;
365
USBENDPOINTADDRESS Address;
366
USBENDPOINTATTRIBS Attributes;
367
USBMAXPACKET MaxPacket;
371
typedef struct _USBQUALIFIERDESC {
373
BYTE bDescriptorType;
376
BYTE bDeviceSubClass;
383
typedef struct _USBSTRINGDESC {
385
BYTE bDescriptorType;
389
typedef struct _USBSTRINGLANGIDS {
391
BYTE bDescriptorType;
395
typedef struct _USBHIDSTANDARDDESC {
397
BYTE bDescriptorType;
400
BYTE bNumDescriptors;
401
} USBHIDSTANDARDDESC;
403
typedef struct _USBHIDOPTIONALDESC {
404
BYTE bClassDescriptorType;
405
USHORT usDescriptorLength;
406
} USBHIDOPTIONALDESC;
408
typedef struct _USBPHYSICALDESCSET0 {
411
} USBPHYSICALDESCSET0;
413
typedef union _USBPHYSICALDESCSET {
419
} USBPHYSICALDESCSET;
421
typedef struct _USBPHYSICALDESCITEM {
430
} USBPHYSICALDESCITEM;
432
typedef union _USBHUBCHARACTERISTICS {
433
WORD wHubCharacteristics;
435
BYTE bLogicalPowerSwitchingMode:2;
436
BYTE fCompoundDevice:1;
437
BYTE bOverCurrentMode:2;
439
BYTE fPortIndicatorSupport:1;
442
} USBHUBCHARACTERISTICS;
444
#if !defined(MIDL_PASS)
445
C_ASSERT((sizeof(USBHUBCHARACTERISTICS) == sizeof(WORD)));
448
typedef struct _USBHUBDESC {
450
BYTE bDescriptorType;
452
USBHUBCHARACTERISTICS Characteristics;
454
BYTE bHubContrCurrent;
455
BYTE bDeviceRemovable[32];
456
BYTE bPortPwrCtrlMask[32];
459
#if !defined(MIDL_PASS)
460
C_ASSERT((sizeof(USBHUBDESC) == 71));
463
typedef union _USBHUBPORTSTATUS {
466
BYTE fCurrentConnectionStatus:1;
473
BYTE fLowSpeedDevice:1;
474
BYTE fHighSpeedDevice:1;
476
BYTE fPortIndicatorControl:1;
481
#if !defined(MIDL_PASS)
482
C_ASSERT((sizeof(USBHUBPORTSTATUS) == sizeof(WORD)));
485
typedef union _USBHUBPORTSTATUSCHANGE {
486
WORD wPortStatusChange;
488
BYTE fConnectionStatusChange:1;
489
BYTE fEnabledChange:1;
490
BYTE fSuspendChange:1;
491
BYTE fOverCurrentChange:1;
496
} USBHUBPORTSTATUSCHANGE;
498
#if !defined(MIDL_PASS)
499
C_ASSERT((sizeof(USBHUBPORTSTATUSCHANGE) == sizeof(WORD)));
502
typedef struct _USBHUBPORTDATA {
503
USBHUBPORTSTATUS PortStatus;
504
USBHUBPORTSTATUSCHANGE PortStatusChange;
507
#define USB_MAKE_LANGID(lang, sublang) \
508
((((USHORT)(sublang)) << 10) | (USHORT)(lang))
510
#define USB_LANG_RESERVED 0x00
511
#define USB_LANG_ARABIC 0x01
512
#define USB_LANG_BULGARIAN 0x02
513
#define USB_LANG_CATALAN 0x03
514
#define USB_LANG_CHINESE 0x04
515
#define USB_LANG_CZECH 0x05
516
#define USB_LANG_DANISH 0x06
517
#define USB_LANG_GERMAN 0x07
518
#define USB_LANG_GREEK 0x08
519
#define USB_LANG_ENGLISH 0x09
520
#define USB_LANG_SPANISH 0x0a
521
#define USB_LANG_FINNISH 0x0b
522
#define USB_LANG_FRENCH 0x0c
523
#define USB_LANG_HEBREW 0x0d
524
#define USB_LANG_HUNGARIAN 0x0e
525
#define USB_LANG_ICELANDIC 0x0f
526
#define USB_LANG_ITALIAN 0x10
527
#define USB_LANG_JAPANESE 0x11
528
#define USB_LANG_KOREAN 0x12
529
#define USB_LANG_DUTCH 0x13
530
#define USB_LANG_NORWEGIAN 0x14
531
#define USB_LANG_POLISH 0x15
532
#define USB_LANG_PORTUGUESE 0x16
533
#define USB_LANG_ROMANIAN 0x18
534
#define USB_LANG_RUSSIAN 0x19
535
#define USB_LANG_CROATIAN 0x1a
536
#define USB_LANG_SERBIAN 0x1a
537
#define USB_LANG_SLOVAK 0x1b
538
#define USB_LANG_ALBANIAN 0x1c
539
#define USB_LANG_SWEDISH 0x1d
540
#define USB_LANG_THAI 0x1e
541
#define USB_LANG_TURKISH 0x1f
542
#define USB_LANG_URDU 0x20
543
#define USB_LANG_INDONESIAN 0x21
544
#define USB_LANG_UKRANIAN 0x22
545
#define USB_LANG_BELARUSIAN 0x23
546
#define USB_LANG_SLOVENIAN 0x24
547
#define USB_LANG_ESTONIAN 0x25
548
#define USB_LANG_LATVIAN 0x26
549
#define USB_LANG_LITHUANIAN 0x27
550
#define USB_LANG_FARSI 0x29
551
#define USB_LANG_VIETNAMESE 0x2a
552
#define USB_LANG_ARMENIAN 0x2b
553
#define USB_LANG_AZERI 0x2c
554
#define USB_LANG_BASQUE 0x2d
555
#define USB_LANG_MACEDONIAN 0x2f
556
#define USB_LANG_AFRIKAANS 0x36
557
#define USB_LANG_GEORGIAN 0x37
558
#define USB_LANG_FAEROESE 0x38
559
#define USB_LANG_HINDI 0x39
560
#define USB_LANG_MALAY 0x3e
561
#define USB_LANG_KAZAK 0x3f
562
#define USB_LANG_SWAHILI 0x41
563
#define USB_LANG_UZBEK 0x43
564
#define USB_LANG_TATAR 0x44
565
#define USB_LANG_BENGALI 0x45
566
#define USB_LANG_PUNJABI 0x46
567
#define USB_LANG_GUJARATI 0x47
568
#define USB_LANG_ORIYA 0x48
569
#define USB_LANG_TAMIL 0x49
570
#define USB_LANG_TELUGU 0x4a
571
#define USB_LANG_KANNADA 0x4b
572
#define USB_LANG_MALAYALAM 0x4c
573
#define USB_LANG_ASSAMESE 0x4d
574
#define USB_LANG_MARATHI 0x4e
575
#define USB_LANG_SANSKRIT 0x4f
576
#define USB_LANG_KONKANI 0x57
577
#define USB_LANG_MANIPURI 0x58
578
#define USB_LANG_SINDHI 0x59
579
#define USB_LANG_KASHMIRI 0x60
580
#define USB_LANG_NEPALI 0x61
581
#define USB_LANG_HID 0xff
583
#define USB_SUBLANG_ARABIC_SAUDI_ARABIA 0x01
584
#define USB_SUBLANG_ARABIC_SAUDI_ARABIA 0x01
585
#define USB_SUBLANG_ARABIC_IRAQ 0x02
586
#define USB_SUBLANG_ARABIC_EGYPT 0x03
587
#define USB_SUBLANG_ARABIC_LIBYA 0x04
588
#define USB_SUBLANG_ARABIC_ALGERIA 0x05
589
#define USB_SUBLANG_ARABIC_MOROCCO 0x06
590
#define USB_SUBLANG_ARABIC_TUNISIA 0x07
591
#define USB_SUBLANG_ARABIC_OMAN 0x08
592
#define USB_SUBLANG_ARABIC_YEMEN 0x09
593
#define USB_SUBLANG_ARABIC_SYRIA 0x10
594
#define USB_SUBLANG_ARABIC_JORDAN 0x11
595
#define USB_SUBLANG_ARABIC_LEBANON 0x12
596
#define USB_SUBLANG_ARABIC_KUWAIT 0x13
597
#define USB_SUBLANG_ARABIC_UAE 0x14
598
#define USB_SUBLANG_ARABIC_BAHRAIN 0x15
599
#define USB_SUBLANG_ARABIC_QATAR 0x16
600
#define USB_SUBLANG_AZERI_CYRILLIC 0x01
601
#define USB_SUBLANG_AZERI_LATIN 0x02
602
#define USB_SUBLANG_CHINESE_TRADITIONAL 0x01
603
#define USB_SUBLANG_CHINESE_SIMPLIFIED 0x02
604
#define USB_SUBLANG_CHINESE_HONGKONG 0x03
605
#define USB_SUBLANG_CHINESE_SINGAPORE 0x04
606
#define USB_SUBLANG_CHINESE_MACAU 0x05
607
#define USB_SUBLANG_DUTCH 0x01
608
#define USB_SUBLANG_DUTCH_BELGIAN 0x02
609
#define USB_SUBLANG_ENGLISH_US 0x01
610
#define USB_SUBLANG_ENGLISH_UK 0x02
611
#define USB_SUBLANG_ENGLISH_AUS 0x03
612
#define USB_SUBLANG_ENGLISH_CAN 0x04
613
#define USB_SUBLANG_ENGLISH_NZ 0x05
614
#define USB_SUBLANG_ENGLISH_EIRE 0x06
615
#define USB_SUBLANG_ENGLISH_SOUTH_AFRICA 0x07
616
#define USB_SUBLANG_ENGLISH_JAMAICA 0x08
617
#define USB_SUBLANG_ENGLISH_CARIBBEAN 0x09
618
#define USB_SUBLANG_ENGLISH_BELIZE 0x0a
619
#define USB_SUBLANG_ENGLISH_TRINIDAD 0x0b
620
#define USB_SUBLANG_ENGLISH_PHILIPPINES 0x0c
621
#define USB_SUBLANG_ENGLISH_ZIMBABWE 0x0d
622
#define USB_SUBLANG_FRENCH 0x01
623
#define USB_SUBLANG_FRENCH_BELGIAN 0x02
624
#define USB_SUBLANG_FRENCH_CANADIAN 0x03
625
#define USB_SUBLANG_FRENCH_SWISS 0x04
626
#define USB_SUBLANG_FRENCH_LUXEMBOURG 0x05
627
#define USB_SUBLANG_FRENCH_MONACO 0x06
628
#define USB_SUBLANG_GERMAN 0x01
629
#define USB_SUBLANG_GERMAN_SWISS 0x02
630
#define USB_SUBLANG_GERMAN_AUSTRIAN 0x03
631
#define USB_SUBLANG_GERMAN_LUXEMBOURG 0x04
632
#define USB_SUBLANG_GERMAN_LIECHTENSTEIN 0x05
633
#define USB_SUBLANG_ITALIAN 0x01
634
#define USB_SUBLANG_ITALIAN_SWISS 0x02
635
#define USB_SUBLANG_KASHMIRI_INDIA 0x02
636
#define USB_SUBLANG_KOREAN 0x01
637
#define USB_SUBLANG_LITHUANIAN 0x01
638
#define USB_SUBLANG_MALAY_MALAYSIA 0x01
639
#define USB_SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02
640
#define USB_SUBLANG_NEPALI_INDIA 0x02
641
#define USB_SUBLANG_NORWEGIAN_BOKMAL 0x01
642
#define USB_SUBLANG_NORWEGIAN_NYNORSK 0x02
643
#define USB_SUBLANG_PORTUGUESE 0x01
644
#define USB_SUBLANG_PORTUGUESE_BRAZILIAN 0x02
645
#define USB_SUBLANG_SERBIAN_LATIN 0x02
646
#define USB_SUBLANG_SERBIAN_CYRILLIC 0x03
647
#define USB_SUBLANG_SPANISH 0x01
648
#define USB_SUBLANG_SPANISH_MEXICAN 0x02
649
#define USB_SUBLANG_SPANISH_MODERN 0x03
650
#define USB_SUBLANG_SPANISH_GUATEMALA 0x04
651
#define USB_SUBLANG_SPANISH_COSTA_RICA 0x05
652
#define USB_SUBLANG_SPANISH_PANAMA 0x06
653
#define USB_SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07
654
#define USB_SUBLANG_SPANISH_VENEZUELA 0x08
655
#define USB_SUBLANG_SPANISH_COLOMBIA 0x09
656
#define USB_SUBLANG_SPANISH_PERU 0x0a
657
#define USB_SUBLANG_SPANISH_ARGENTINA 0x0b
658
#define USB_SUBLANG_SPANISH_ECUADOR 0x0c
659
#define USB_SUBLANG_SPANISH_CHILE 0x0d
660
#define USB_SUBLANG_SPANISH_URUGUAY 0x0e
661
#define USB_SUBLANG_SPANISH_PARAGUAY 0x0f
662
#define USB_SUBLANG_SPANISH_BOLIVIA 0x10
663
#define USB_SUBLANG_SPANISH_EL_SALVADOR 0x11
664
#define USB_SUBLANG_SPANISH_HONDURAS 0x12
665
#define USB_SUBLANG_SPANISH_NICARAGUA 0x13
666
#define USB_SUBLANG_SPANISH_PUERTO_RICO 0x14
667
#define USB_SUBLANG_SWEDISH 0x01
668
#define USB_SUBLANG_SWEDISH_FINLAND 0x02
669
#define USB_SUBLANG_URDU_PAKISTAN 0x01
670
#define USB_SUBLANG_URDU_INDIA 0x02
671
#define USB_SUBLANG_UZBEK_LATIN 0x01
672
#define USB_SUBLANG_UZBEK_CYRILLIC 0x02
673
#define USB_SUBLANG_HID_USAGE_DATA_DESCRIPTOR 0x01
674
#define USB_SUBLANG_HID_VENDOR_DEFINED_1 0x3c
675
#define USB_SUBLANG_HID_VENDOR_DEFINED_2 0x3d
676
#define USB_SUBLANG_HID_VENDOR_DEFINED_3 0x3e
677
#define USB_SUBLANG_HID_VENDOR_DEFINED_4 0x3f
679
#endif /* !defined(MIDL_PASS) */