| 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 |
|