Home | History | Annotate | Download | only in ddk
      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)		\
     85 		(BYTE)( ((BYTE)direction << 7) |			\
     86 			((BYTE)type << 5) | ((BYTE)recipient & 0x07) )
     87 #endif
     88 
     89 #define GET_STATUS				0
     90 #define CLEAR_FEATURE				1
     91 #define SET_FEATURE				3
     92 #define SET_ADDRESS				5
     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
    100 
    101 #define USB_BULK_ONLY_MASS_STG_RESET		0xFF
    102 #define USB_BULK_ONLY_MASS_STG_GET_MAX_LUN	0xFE
    103 
    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
    110 
    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
    116 #define GET_TIME				25
    117 #define SET_STREAM_INDEX			26
    118 #define SET_WUSB_MAS				27
    119 #define WUSB_CH_STOP				28
    120 
    121 #define EXEC_RC_CMD				40
    122 
    123 #define TIME_ADJ				0x01
    124 #define TIME_BPST				0x02
    125 #define TIME_WUSB				0x03
    126 
    127 #define HID_REPORT_TYPE_INPUT			0x01
    128 #define HID_REPORT_TYPE_OUTPUT			0x02
    129 #define HID_REPORT_TYPE_FEATURE			0x03
    130 
    131 #define HID_PROTOCOL_TYPE_BOOT			0x00
    132 #define HID_PROTOCOL_TYPE_REPORT		0x01
    133 
    134 #define HUB_DEVICE_PROTOCOL_1X			0
    135 #define HUB_DEVICE_PROTOCOL_SINGLE_TT		1
    136 #define HUB_DEVICE_PROTOCOL_MULTI_TT		2
    137 
    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
    142 
    143 #define CLEAR_TT_BUFFER				8
    144 #define RESET_TT				9
    145 #define GET_TT_STATE				10
    146 #define STOP_TT					11
    147 
    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
    154 #define PORT_RESET				4
    155 #define PORT_POWER				8
    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
    162 #define PORT_TEST				21
    163 #define PORT_INDICATOR				22
    164 
    165 #define USBSETUPSIZE				8
    166 #define USBINREQUEST				128
    167 
    168 #define BM_GET_DEVICE				128
    169 #define BM_GET_INTERFACE			129
    170 #define BM_GET_ENDPOINT				130
    171 
    172 #define BM_SET_DEVICE				0
    173 #define BM_SET_INTERFACE			1
    174 #define BM_SET_ENDPOINT				2
    175 
    176 #define HALT_ENDPOINT				0
    177 #define REMOTE_WAKEUP				1
    178 #define TEST_MODE				2
    179 
    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
    186 
    187 #define CONFIG_BUS_POWERED			0x80
    188 #define CONFIG_SELF_POWERED			0x40
    189 #define CONFIG_REMOTE_WAKEUP			0x20
    190 
    191 #define USB_WA_MULTIFUNCTION			0x02
    192 #define USB_WA_PROTOCOL				0x01
    193 #define USB_RADIO_CONTROL			0x2
    194 
    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
    200 
    201 #define BOOT_INTERFACE_SUBCLASS			0x01
    202 #define COMMON_CLASS				0x02
    203 #define USB_RF_CONTROL				0x01
    204 
    205 #define PROTOCOL_NONE				0x00
    206 #define PROTOCOL_KEYBOARD			0x01
    207 #define PROTOCOL_MOUSE				0x02
    208 
    209 #define EP_OUT					0
    210 #define EP_IN					1
    211 
    212 #define MAKE_ENDPOINT_ADDRESS(num, dir)				\
    213 		( ((BYTE)(dir) << 7) | ((BYTE)(num) & 0x0F) )
    214 
    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
    220 
    221 typedef union _USBDESCRIPTORTYPE {
    222   BYTE Byte;
    223 #if !defined(MIDL_PASS)
    224   struct Bits {
    225     BYTE Descriptor:5;
    226     BYTE Type:2;
    227     BYTE Reserved:1;
    228   } Bits;
    229 #endif
    230 } USBDESCRIPTORTYPE;
    231 
    232 typedef union _USBCONFIGATTRIBS {
    233   BYTE Byte;
    234 #if !defined(MIDL_PASS)
    235   struct Bits {
    236     BYTE bReserved0_4:5;
    237     BYTE bRemoteWakeup:1;
    238     BYTE bSelfPowered:1;
    239     BYTE bReserved7:1;
    240   } Bits;
    241 #endif
    242 } USBCONFIGATTRIBS;
    243 
    244 typedef union _USBREQUESTTYPE {
    245   BYTE Byte;
    246 #if !defined(MIDL_PASS)
    247   struct Bits {
    248     BYTE Recipient:5;
    249     BYTE Type:2;
    250     BYTE Direction:1;
    251     } Bits;
    252 #endif
    253 } USBREQUESTTYPE;
    254 
    255 #if !defined(MIDL_PASS)
    256 C_ASSERT((sizeof(USBREQUESTTYPE) == sizeof(BYTE)));
    257 #endif
    258 
    259 typedef struct _USBSETUPREQUEST {
    260   USBREQUESTTYPE bmRequestType;
    261   BYTE bRequest;
    262   SHORT sSetupValue;
    263   SHORT sSetupIndex;
    264   SHORT sSetupLength;
    265 } USBSETUPREQUEST;
    266 
    267 #if !defined(MIDL_PASS)
    268 
    269 typedef struct _USBDEVICEDESC {
    270   BYTE bLength;
    271   BYTE bDescriptorType;
    272   USHORT usUSB;
    273   BYTE bDeviceClass;
    274   BYTE bDeviceSubClass;
    275   BYTE bProtocol;
    276   BYTE bMaxPacket0;
    277   USHORT usVendor;
    278   USHORT usProduct;
    279   USHORT usDeviceNumber;
    280   BYTE bManufacturer;
    281   BYTE bProductDesc;
    282   BYTE bSerialNumber;
    283   BYTE bNumConfigs;
    284 } USBDEVICEDESC;
    285 
    286 typedef struct _USBCONFIGDESC {
    287   BYTE bLength;
    288   BYTE bDescriptorType;
    289   USHORT usTotalLength;
    290   BYTE bNumInterfaces;
    291   BYTE bConfigValue;
    292   BYTE bConfig;
    293   BYTE bAttributes;
    294   BYTE bMaxPower;
    295 } USBCONFIGDESC;
    296 
    297 
    298 typedef struct _USBINTERFACEDESC {
    299   BYTE bLength;
    300   BYTE bDescriptorType;
    301   BYTE bInterfaceNumber;
    302   BYTE bAlternateSetting;
    303   BYTE bNumEndpoints;
    304   BYTE bClass;
    305   BYTE bSubClass;
    306   BYTE bProtocol;
    307   BYTE bDescription;
    308 } USBINTERFACEDESC;
    309 
    310 #define ENDPOINT_DIRECTION_OUT			0
    311 #define ENDPOINT_DIRECTION_IN			1
    312 
    313 typedef union _USBENDPOINTADDRESS {
    314   BYTE Byte;
    315   struct Bits {
    316     BYTE Number:4;
    317     BYTE Reserved:3;
    318     BYTE Direction:1;
    319   } Bits;
    320 } USBENDPOINTADDRESS;
    321 
    322 C_ASSERT((sizeof(USBENDPOINTADDRESS) == sizeof(BYTE)));
    323 
    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
    328 
    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
    333 
    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
    338 
    339 typedef union _USBENDPOINTATTRIBS {
    340   BYTE Byte;
    341   struct Bits {
    342     BYTE TransferType:2;
    343     BYTE SyncType:2;
    344     BYTE UsageType:2;
    345     BYTE Reserved:2;
    346   } Bits;
    347 } USBENDPOINTATTRIBS;
    348 
    349 C_ASSERT((sizeof(USBENDPOINTATTRIBS) == sizeof(BYTE)));
    350 
    351 typedef union _USBMAXPACKET {
    352   WORD Word;
    353   struct Bits {
    354     WORD Size:11;
    355     WORD AdditionalXactions:2;
    356     WORD Reserved:3;
    357   } Bits;
    358 } USBMAXPACKET;
    359 
    360 C_ASSERT((sizeof(USBMAXPACKET) == sizeof(WORD)));
    361 
    362 typedef struct _USBENDPOINTDESC {
    363   BYTE bLength;
    364   BYTE bDescriptorType;
    365   USBENDPOINTADDRESS Address;
    366   USBENDPOINTATTRIBS Attributes;
    367   USBMAXPACKET MaxPacket;
    368   BYTE bInterval;
    369 } USBENDPOINTDESC;
    370 
    371 typedef struct _USBQUALIFIERDESC {
    372   BYTE bLength;
    373   BYTE bDescriptorType;
    374   USHORT usUSB;
    375   BYTE bDeviceClass;
    376   BYTE bDeviceSubClass;
    377   BYTE bProtocol;
    378   BYTE bMaxPacket;
    379   BYTE bNumConfigs;
    380   BYTE bReserved;
    381 } USBQUALIFIERDESC;
    382 
    383 typedef struct _USBSTRINGDESC {
    384   BYTE bLength;
    385   BYTE bDescriptorType;
    386   WCHAR wchData[1];
    387 } USBSTRINGDESC;
    388 
    389 typedef struct _USBSTRINGLANGIDS {
    390   BYTE bLength;
    391   BYTE bDescriptorType;
    392   WORD wLANGIDs[1];
    393 } USBSTRINGLANGIDS;
    394 
    395 typedef struct _USBHIDSTANDARDDESC {
    396   BYTE bLength;
    397   BYTE bDescriptorType;
    398   USHORT bcdHID;
    399   BYTE bCountryCode;
    400   BYTE bNumDescriptors;
    401 } USBHIDSTANDARDDESC;
    402 
    403 typedef struct _USBHIDOPTIONALDESC {
    404   BYTE bClassDescriptorType;
    405   USHORT usDescriptorLength;
    406 } USBHIDOPTIONALDESC;
    407 
    408 typedef struct _USBPHYSICALDESCSET0 {
    409   BYTE bNumber;
    410   BYTE bLength;
    411 } USBPHYSICALDESCSET0;
    412 
    413 typedef union _USBPHYSICALDESCSET {
    414   BYTE bPhysicalInfo;
    415   struct Bits {
    416     BYTE bPreference:5;
    417     BYTE bBias:3;
    418     } Bits;
    419 } USBPHYSICALDESCSET;
    420 
    421 typedef struct _USBPHYSICALDESCITEM {
    422   BYTE bDesignator;
    423   union Flags {
    424     BYTE bFlags;
    425     struct Bits {
    426         BYTE bEffort:5;
    427         BYTE bQualifier:3;
    428     } Bits;
    429   } Flags;
    430 } USBPHYSICALDESCITEM;
    431 
    432 typedef union _USBHUBCHARACTERISTICS {
    433   WORD wHubCharacteristics;
    434   struct Bits {
    435     BYTE bLogicalPowerSwitchingMode:2;
    436     BYTE fCompoundDevice:1;
    437     BYTE bOverCurrentMode:2;
    438     BYTE bTTThinkTime:2;
    439     BYTE fPortIndicatorSupport:1;
    440     BYTE bReserved:8;
    441   } Bits;
    442 } USBHUBCHARACTERISTICS;
    443 
    444 #if !defined(MIDL_PASS)
    445 C_ASSERT((sizeof(USBHUBCHARACTERISTICS) == sizeof(WORD)));
    446 #endif
    447 
    448 typedef struct _USBHUBDESC {
    449   BYTE bLength;
    450   BYTE bDescriptorType;
    451   BYTE bNumberOfPorts;
    452   USBHUBCHARACTERISTICS Characteristics;
    453   BYTE bPwrOn2PwrGood;
    454   BYTE bHubContrCurrent;
    455   BYTE bDeviceRemovable[32];
    456   BYTE bPortPwrCtrlMask[32];
    457 } USBHUBDESC;
    458 
    459 #if !defined(MIDL_PASS)
    460 C_ASSERT((sizeof(USBHUBDESC) == 71));
    461 #endif
    462 
    463 typedef union _USBHUBPORTSTATUS {
    464   WORD wPortStatus;
    465   struct Bits {
    466     BYTE fCurrentConnectionStatus:1;
    467     BYTE fEnabled:1;
    468     BYTE fSuspend:1;
    469     BYTE fOverCurrent:1;
    470     BYTE fReset:1;
    471     BYTE bReserved1:3;
    472     BYTE fPortPower:1;
    473     BYTE fLowSpeedDevice:1;
    474     BYTE fHighSpeedDevice:1;
    475     BYTE fTestMode:1;
    476     BYTE fPortIndicatorControl:1;
    477     BYTE bReserved2:3;
    478   } Bits;
    479 } USBHUBPORTSTATUS;
    480 
    481 #if !defined(MIDL_PASS)
    482 C_ASSERT((sizeof(USBHUBPORTSTATUS) == sizeof(WORD)));
    483 #endif
    484 
    485 typedef union _USBHUBPORTSTATUSCHANGE {
    486   WORD wPortStatusChange;
    487   struct Bits {
    488     BYTE fConnectionStatusChange:1;
    489     BYTE fEnabledChange:1;
    490     BYTE fSuspendChange:1;
    491     BYTE fOverCurrentChange:1;
    492     BYTE fResetChange:1;
    493     BYTE bReserved1:3;
    494     BYTE bReserved2:8;
    495   } Bits;
    496 } USBHUBPORTSTATUSCHANGE;
    497 
    498 #if !defined(MIDL_PASS)
    499 C_ASSERT((sizeof(USBHUBPORTSTATUSCHANGE) == sizeof(WORD)));
    500 #endif
    501 
    502 typedef struct _USBHUBPORTDATA {
    503   USBHUBPORTSTATUS PortStatus;
    504   USBHUBPORTSTATUSCHANGE PortStatusChange;
    505 } USBHUBPORTDATA;
    506 
    507 #define USB_MAKE_LANGID(lang, sublang)					\
    508 		((((USHORT)(sublang)) << 10) | (USHORT)(lang))
    509 
    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
    582 
    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
    678 
    679 #endif /* !defined(MIDL_PASS) */
    680 
    681 #include <poppack.h>
    682 
    683