usbprotocoldefs.h 18 KB

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