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) */