1 | /**
|
---|
2 | * This file is part of the mingw-w64 runtime package.
|
---|
3 | * No warranty is given; refer to the file DISCLAIMER within this package.
|
---|
4 | */
|
---|
5 |
|
---|
6 | #ifndef __USBSPEC_H__
|
---|
7 | #define __USBSPEC_H__
|
---|
8 |
|
---|
9 | #include <winapifamily.h>
|
---|
10 |
|
---|
11 | #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
|
---|
12 | #include <pshpack1.h>
|
---|
13 |
|
---|
14 | typedef enum _USB_DEVICE_SPEED {
|
---|
15 | UsbLowSpeed = 0,
|
---|
16 | UsbFullSpeed,
|
---|
17 | UsbHighSpeed,
|
---|
18 | UsbSuperSpeed
|
---|
19 | } USB_DEVICE_SPEED;
|
---|
20 |
|
---|
21 | typedef enum _USB_DEVICE_TYPE {
|
---|
22 | Usb11Device = 0,
|
---|
23 | Usb20Device
|
---|
24 | } USB_DEVICE_TYPE;
|
---|
25 |
|
---|
26 | typedef union _BM_REQUEST_TYPE {
|
---|
27 | __C89_NAMELESS struct _BM {
|
---|
28 | UCHAR Recipient:2;
|
---|
29 | UCHAR Reserved:3;
|
---|
30 | UCHAR Type:2;
|
---|
31 | UCHAR Dir:1;
|
---|
32 | };
|
---|
33 | UCHAR B;
|
---|
34 | } BM_REQUEST_TYPE,*PBM_REQUEST_TYPE;
|
---|
35 |
|
---|
36 | typedef struct _USB_DEFAULT_PIPE_SETUP_PACKET {
|
---|
37 | BM_REQUEST_TYPE bmRequestType;
|
---|
38 | UCHAR bRequest;
|
---|
39 | union _wValue {
|
---|
40 | __C89_NAMELESS struct {
|
---|
41 | UCHAR LowByte;
|
---|
42 | UCHAR HiByte;
|
---|
43 | };
|
---|
44 | USHORT W;
|
---|
45 | } wValue;
|
---|
46 | union _wIndex {
|
---|
47 | __C89_NAMELESS struct {
|
---|
48 | UCHAR LowByte;
|
---|
49 | UCHAR HiByte;
|
---|
50 | };
|
---|
51 | USHORT W;
|
---|
52 | } wIndex;
|
---|
53 | USHORT wLength;
|
---|
54 | } USB_DEFAULT_PIPE_SETUP_PACKET,*PUSB_DEFAULT_PIPE_SETUP_PACKET;
|
---|
55 |
|
---|
56 | #define BMREQUEST_HOST_TO_DEVICE 0
|
---|
57 | #define BMREQUEST_DEVICE_TO_HOST 1
|
---|
58 |
|
---|
59 | #define BMREQUEST_STANDARD 0
|
---|
60 | #define BMREQUEST_CLASS 1
|
---|
61 | #define BMREQUEST_VENDOR 2
|
---|
62 |
|
---|
63 | #define BMREQUEST_TO_DEVICE 0
|
---|
64 | #define BMREQUEST_TO_INTERFACE 1
|
---|
65 | #define BMREQUEST_TO_ENDPOINT 2
|
---|
66 | #define BMREQUEST_TO_OTHER 3
|
---|
67 |
|
---|
68 | #define USB_DESCRIPTOR_MAKE_TYPE_AND_INDEX(d, i) ((USHORT) (((USHORT) d) << 8 | i))
|
---|
69 |
|
---|
70 | #define USB_REQUEST_GET_STATUS 0x00
|
---|
71 | #define USB_REQUEST_CLEAR_FEATURE 0x01
|
---|
72 | #define USB_REQUEST_SET_FEATURE 0x03
|
---|
73 | #define USB_REQUEST_SET_ADDRESS 0x05
|
---|
74 | #define USB_REQUEST_GET_DESCRIPTOR 0x06
|
---|
75 | #define USB_REQUEST_SET_DESCRIPTOR 0x07
|
---|
76 | #define USB_REQUEST_GET_CONFIGURATION 0x08
|
---|
77 | #define USB_REQUEST_SET_CONFIGURATION 0x09
|
---|
78 | #define USB_REQUEST_GET_INTERFACE 0x0a
|
---|
79 | #define USB_REQUEST_SET_INTERFACE 0x0b
|
---|
80 | #define USB_REQUEST_SYNC_FRAME 0x0c
|
---|
81 |
|
---|
82 | #define USB_REQUEST_SET_SEL 0x30
|
---|
83 | #define USB_REQUEST_ISOCH_DELAY 0x31
|
---|
84 |
|
---|
85 | #define USB_DEVICE_DESCRIPTOR_TYPE 0x01
|
---|
86 | #define USB_CONFIGURATION_DESCRIPTOR_TYPE 0x02
|
---|
87 | #define USB_STRING_DESCRIPTOR_TYPE 0x03
|
---|
88 | #define USB_INTERFACE_DESCRIPTOR_TYPE 0x04
|
---|
89 | #define USB_ENDPOINT_DESCRIPTOR_TYPE 0x05
|
---|
90 | #define USB_DEVICE_QUALIFIER_DESCRIPTOR_TYPE 0x06
|
---|
91 | #define USB_OTHER_SPEED_CONFIGURATION_DESCRIPTOR_TYPE 0x07
|
---|
92 | #define USB_INTERFACE_POWER_DESCRIPTOR_TYPE 0x08
|
---|
93 | #define USB_OTG_DESCRIPTOR_TYPE 0x09
|
---|
94 | #define USB_DEBUG_DESCRIPTOR_TYPE 0x0a
|
---|
95 | #define USB_INTERFACE_ASSOCIATION_DESCRIPTOR_TYPE 0x0b
|
---|
96 | #define USB_BOS_DESCRIPTOR_TYPE 0x0f
|
---|
97 | #define USB_DEVICE_CAPABILITY_DESCRIPTOR_TYPE 0x10
|
---|
98 | #define USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR_TYPE 0x30
|
---|
99 | #define USB_SUPERSPEEDPLUS_ISOCH_ENDPOINT_COMPANION_DESCRIPTOR_TYPE 0x31
|
---|
100 |
|
---|
101 | #define USB_RESERVED_DESCRIPTOR_TYPE 0x06
|
---|
102 | #define USB_CONFIG_POWER_DESCRIPTOR_TYPE 0x07
|
---|
103 |
|
---|
104 | #define USB_FEATURE_ENDPOINT_STALL 0x00
|
---|
105 | #define USB_FEATURE_REMOTE_WAKEUP 0x01
|
---|
106 | #define USB_FEATURE_TEST_MODE 0x02
|
---|
107 |
|
---|
108 | #define USB_FEATURE_FUNCTION_SUSPEND 0x00
|
---|
109 | #define USB_FEATURE_U1_ENABLE 0x30
|
---|
110 | #define USB_FEATURE_U2_ENABLE 0x31
|
---|
111 | #define USB_FEATURE_LTM_ENABLE 0x32
|
---|
112 | #define USB_FEATURE_LDM_ENABLE 0x35
|
---|
113 |
|
---|
114 | #define USB_FEATURE_BATTERY_WAKE_MASK 0x28
|
---|
115 | #define USB_FEATURE_OS_IS_PD_AWARE 0x29
|
---|
116 | #define USB_FEATURE_POLICY_MODE 0x2A
|
---|
117 | #define USB_FEATURE_CHARGING_POLICY 0x36
|
---|
118 |
|
---|
119 | #define USB_CHARGING_POLICY_DEFAULT 0x00
|
---|
120 | #define USB_CHARGING_POLICY_ICCHPF 0x01
|
---|
121 | #define USB_CHARGING_POLICY_ICCLPF 0x02
|
---|
122 | #define USB_CHARGING_POLICY_NO_POWER 0x03
|
---|
123 |
|
---|
124 | #define USB_STATUS_PORT_STATUS 0x00
|
---|
125 | #define USB_STATUS_PD_STATUS 0x01
|
---|
126 | #define USB_STATUS_EXT_PORT_STATUS 0x02
|
---|
127 |
|
---|
128 | #define USB_GETSTATUS_SELF_POWERED 0x01
|
---|
129 | #define USB_GETSTATUS_REMOTE_WAKEUP_ENABLED 0x02
|
---|
130 |
|
---|
131 | #define USB_GETSTATUS_U1_ENABLE 0x04
|
---|
132 | #define USB_GETSTATUS_U2_ENABLE 0x08
|
---|
133 | #define USB_GETSTATUS_LTM_ENABLE 0x10
|
---|
134 |
|
---|
135 | typedef union _USB_DEVICE_STATUS {
|
---|
136 | USHORT AsUshort16;
|
---|
137 | __C89_NAMELESS struct {
|
---|
138 | USHORT SelfPowered : 1;
|
---|
139 | USHORT RemoteWakeup : 1;
|
---|
140 | USHORT U1Enable : 1;
|
---|
141 | USHORT U2Enable : 1;
|
---|
142 | USHORT LtmEnable : 1;
|
---|
143 | USHORT Reserved : 11;
|
---|
144 | };
|
---|
145 | } USB_DEVICE_STATUS,*PUSB_DEVICE_STATUS;
|
---|
146 |
|
---|
147 | typedef union _USB_INTERFACE_STATUS {
|
---|
148 | USHORT AsUshort16;
|
---|
149 | __C89_NAMELESS struct {
|
---|
150 | USHORT RemoteWakeupCapable : 1;
|
---|
151 | USHORT RemoteWakeupEnabled : 1;
|
---|
152 | USHORT Reserved : 14;
|
---|
153 | };
|
---|
154 | } USB_INTERFACE_STATUS,*PUSB_INTERFACE_STATUS;
|
---|
155 |
|
---|
156 | typedef union _USB_ENDPOINT_STATUS {
|
---|
157 | USHORT AsUshort16;
|
---|
158 | __C89_NAMELESS struct {
|
---|
159 | USHORT Halt : 1;
|
---|
160 | USHORT Reserved : 15;
|
---|
161 | };
|
---|
162 | } USB_ENDPOINT_STATUS,*PUSB_ENDPOINT_STATUS;
|
---|
163 |
|
---|
164 | typedef struct _USB_COMMON_DESCRIPTOR {
|
---|
165 | UCHAR bLength;
|
---|
166 | UCHAR bDescriptorType;
|
---|
167 | } USB_COMMON_DESCRIPTOR,*PUSB_COMMON_DESCRIPTOR;
|
---|
168 |
|
---|
169 | typedef struct _USB_DEVICE_DESCRIPTOR {
|
---|
170 | UCHAR bLength;
|
---|
171 | UCHAR bDescriptorType;
|
---|
172 | USHORT bcdUSB;
|
---|
173 | UCHAR bDeviceClass;
|
---|
174 | UCHAR bDeviceSubClass;
|
---|
175 | UCHAR bDeviceProtocol;
|
---|
176 | UCHAR bMaxPacketSize0;
|
---|
177 | USHORT idVendor;
|
---|
178 | USHORT idProduct;
|
---|
179 | USHORT bcdDevice;
|
---|
180 | UCHAR iManufacturer;
|
---|
181 | UCHAR iProduct;
|
---|
182 | UCHAR iSerialNumber;
|
---|
183 | UCHAR bNumConfigurations;
|
---|
184 | } USB_DEVICE_DESCRIPTOR,*PUSB_DEVICE_DESCRIPTOR;
|
---|
185 |
|
---|
186 | #define USB_DEVICE_CLASS_RESERVED 0x00
|
---|
187 | #define USB_DEVICE_CLASS_AUDIO 0x01
|
---|
188 | #define USB_DEVICE_CLASS_COMMUNICATIONS 0x02
|
---|
189 | #define USB_DEVICE_CLASS_HUMAN_INTERFACE 0x03
|
---|
190 | #define USB_DEVICE_CLASS_MONITOR 0x04
|
---|
191 | #define USB_DEVICE_CLASS_PHYSICAL_INTERFACE 0x05
|
---|
192 | #define USB_DEVICE_CLASS_POWER 0x06
|
---|
193 | #define USB_DEVICE_CLASS_IMAGE 0x06
|
---|
194 | #define USB_DEVICE_CLASS_PRINTER 0x07
|
---|
195 | #define USB_DEVICE_CLASS_STORAGE 0x08
|
---|
196 | #define USB_DEVICE_CLASS_HUB 0x09
|
---|
197 | #define USB_DEVICE_CLASS_CDC_DATA 0x0a
|
---|
198 | #define USB_DEVICE_CLASS_SMART_CARD 0x0b
|
---|
199 | #define USB_DEVICE_CLASS_CONTENT_SECURITY 0x0d
|
---|
200 | #define USB_DEVICE_CLASS_VIDEO 0x0e
|
---|
201 | #define USB_DEVICE_CLASS_PERSONAL_HEALTHCARE 0x0f
|
---|
202 | #define USB_DEVICE_CLASS_AUDIO_VIDEO 0x10
|
---|
203 | #define USB_DEVICE_CLASS_BILLBOARD 0x11
|
---|
204 | #define USB_DEVICE_CLASS_DIAGNOSTIC_DEVICE 0xdc
|
---|
205 | #define USB_DEVICE_CLASS_WIRELESS_CONTROLLER 0xe0
|
---|
206 | #define USB_DEVICE_CLASS_MISCELLANEOUS 0xef
|
---|
207 | #define USB_DEVICE_CLASS_APPLICATION_SPECIFIC 0xfe
|
---|
208 | #define USB_DEVICE_CLASS_VENDOR_SPECIFIC 0xff
|
---|
209 |
|
---|
210 | typedef struct _USB_DEVICE_QUALIFIER_DESCRIPTOR {
|
---|
211 | UCHAR bLength;
|
---|
212 | UCHAR bDescriptorType;
|
---|
213 | USHORT bcdUSB;
|
---|
214 | UCHAR bDeviceClass;
|
---|
215 | UCHAR bDeviceSubClass;
|
---|
216 | UCHAR bDeviceProtocol;
|
---|
217 | UCHAR bMaxPacketSize0;
|
---|
218 | UCHAR bNumConfigurations;
|
---|
219 | UCHAR bReserved;
|
---|
220 | } USB_DEVICE_QUALIFIER_DESCRIPTOR,*PUSB_DEVICE_QUALIFIER_DESCRIPTOR;
|
---|
221 |
|
---|
222 | typedef struct _USB_BOS_DESCRIPTOR {
|
---|
223 | UCHAR bLength;
|
---|
224 | UCHAR bDescriptorType;
|
---|
225 | USHORT wTotalLength;
|
---|
226 | UCHAR bNumDeviceCaps;
|
---|
227 | } USB_BOS_DESCRIPTOR,*PUSB_BOS_DESCRIPTOR;
|
---|
228 |
|
---|
229 | #define USB_DEVICE_CAPABILITY_WIRELESS_USB 0x01
|
---|
230 | #define USB_DEVICE_CAPABILITY_USB20_EXTENSION 0x02
|
---|
231 | #define USB_DEVICE_CAPABILITY_SUPERSPEED_USB 0x03
|
---|
232 | #define USB_DEVICE_CAPABILITY_CONTAINER_ID 0x04
|
---|
233 | #define USB_DEVICE_CAPABILITY_PLATFORM 0x05
|
---|
234 | #define USB_DEVICE_CAPABILITY_POWER_DELIVERY 0x06
|
---|
235 | #define USB_DEVICE_CAPABILITY_BATTERY_INFO 0x07
|
---|
236 | #define USB_DEVICE_CAPABILITY_PD_CONSUMER_PORT 0x08
|
---|
237 | #define USB_DEVICE_CAPABILITY_PD_PROVIDER_PORT 0x09
|
---|
238 | #define USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_USB 0x0A
|
---|
239 | #define USB_DEVICE_CAPABILITY_PRECISION_TIME_MEASUREMENT 0x0B
|
---|
240 | #define USB_DEVICE_CAPABILITY_BILLBOARD 0x0D
|
---|
241 |
|
---|
242 | typedef struct _USB_DEVICE_CAPABILITY_USB20_EXTENSION_DESCRIPTOR {
|
---|
243 | UCHAR bLength;
|
---|
244 | UCHAR bDescriptorType;
|
---|
245 | UCHAR bDevCapabilityType;
|
---|
246 | union {
|
---|
247 | ULONG AsUlong;
|
---|
248 | __C89_NAMELESS struct {
|
---|
249 | ULONG Reserved:1;
|
---|
250 | ULONG LPMCapable:1;
|
---|
251 | ULONG BESLAndAlternateHIRDSupported:1;
|
---|
252 | ULONG BaselineBESLValid:1;
|
---|
253 | ULONG DeepBESLValid:1;
|
---|
254 | ULONG Reserved1:3;
|
---|
255 | ULONG BaselineBESL:4;
|
---|
256 | ULONG DeepBESL:4;
|
---|
257 | ULONG Reserved2:16;
|
---|
258 | };
|
---|
259 | } bmAttributes;
|
---|
260 | } USB_DEVICE_CAPABILITY_USB20_EXTENSION_DESCRIPTOR,*PUSB_DEVICE_CAPABILITY_USB20_EXTENSION_DESCRIPTOR;
|
---|
261 |
|
---|
262 | #define USB_DEVICE_CAPABILITY_USB20_EXTENSION_BMATTRIBUTES_RESERVED_MASK 0xffff00e1
|
---|
263 |
|
---|
264 | typedef struct _USB_DEVICE_CAPABILITY_POWER_DELIVERY_DESCRIPTOR {
|
---|
265 | UCHAR bLength;
|
---|
266 | UCHAR bDescriptorType;
|
---|
267 | UCHAR bDevCapabilityType;
|
---|
268 | UCHAR bReserved;
|
---|
269 | union {
|
---|
270 | ULONG AsUlong;
|
---|
271 | __C89_NAMELESS struct {
|
---|
272 | ULONG Reserved1:1;
|
---|
273 | ULONG BatteryCharging:1;
|
---|
274 | ULONG USBPowerDelivery:1;
|
---|
275 | ULONG Provider:1;
|
---|
276 | ULONG Consumer:1;
|
---|
277 | ULONG ChargingPolicy:1;
|
---|
278 | ULONG TypeCCurrent:1;
|
---|
279 | ULONG Reserved2:1;
|
---|
280 | ULONG ACSupply:1;
|
---|
281 | ULONG Battery:1;
|
---|
282 | ULONG Other:1;
|
---|
283 | ULONG NumBatteries:3;
|
---|
284 | ULONG UsesVbus:1;
|
---|
285 | ULONG Reserved3:17;
|
---|
286 | };
|
---|
287 | } bmAttributes;
|
---|
288 | USHORT bmProviderPorts;
|
---|
289 | USHORT bmConsumerPorts;
|
---|
290 | USHORT bcdBCVersion;
|
---|
291 | USHORT bcdPDVersion;
|
---|
292 | USHORT bcdUSBTypeCVersion;
|
---|
293 | } USB_DEVICE_CAPABILITY_POWER_DELIVERY_DESCRIPTOR,*PUSB_DEVICE_CAPABILITY_POWER_DELIVERY_DESCRIPTOR;
|
---|
294 |
|
---|
295 | typedef struct _USB_DEVICE_CAPABILITY_PD_CONSUMER_PORT_DESCRIPTOR {
|
---|
296 | UCHAR bLength;
|
---|
297 | UCHAR bDescriptorType;
|
---|
298 | UCHAR bDevCapabilityType;
|
---|
299 | UCHAR bReserved;
|
---|
300 | union {
|
---|
301 | USHORT AsUshort;
|
---|
302 | __C89_NAMELESS struct {
|
---|
303 | USHORT BatteryCharging:1;
|
---|
304 | USHORT USBPowerDelivery:1;
|
---|
305 | USHORT USBTypeCCurrent:1;
|
---|
306 | USHORT Reserved:13;
|
---|
307 | };
|
---|
308 | } bmCapabilities;
|
---|
309 | USHORT wMinVoltage;
|
---|
310 | USHORT wMaxVoltage;
|
---|
311 | USHORT wReserved;
|
---|
312 | ULONG dwMaxOperatingPower;
|
---|
313 | ULONG dwMaxPeakPower;
|
---|
314 | ULONG dwMaxPeakPowerTime;
|
---|
315 | } USB_DEVICE_CAPABILITY_PD_CONSUMER_PORT_DESCRIPTOR,*PUSB_DEVICE_CAPABILITY_PD_CONSUMER_PORT_DESCRIPTOR;
|
---|
316 |
|
---|
317 | typedef struct _USB_DEVICE_CAPABILITY_SUPERSPEED_USB_DESCRIPTOR {
|
---|
318 | UCHAR bLength;
|
---|
319 | UCHAR bDescriptorType;
|
---|
320 | UCHAR bDevCapabilityType;
|
---|
321 | UCHAR bmAttributes;
|
---|
322 | USHORT wSpeedsSupported;
|
---|
323 | UCHAR bFunctionalitySupport;
|
---|
324 | UCHAR bU1DevExitLat;
|
---|
325 | USHORT wU2DevExitLat;
|
---|
326 | } USB_DEVICE_CAPABILITY_SUPERSPEED_USB_DESCRIPTOR,*PUSB_DEVICE_CAPABILITY_SUPERSPEED_USB_DESCRIPTOR;
|
---|
327 |
|
---|
328 | #define USB_DEVICE_CAPABILITY_SUPERSPEED_BMATTRIBUTES_RESERVED_MASK 0xfd
|
---|
329 | #define USB_DEVICE_CAPABILITY_SUPERSPEED_BMATTRIBUTES_LTM_CAPABLE 0x02
|
---|
330 |
|
---|
331 | #define USB_DEVICE_CAPABILITY_SUPERSPEED_SPEEDS_SUPPORTED_RESERVED_MASK 0xfff0
|
---|
332 | #define USB_DEVICE_CAPABILITY_SUPERSPEED_SPEEDS_SUPPORTED_LOW 0x0001
|
---|
333 | #define USB_DEVICE_CAPABILITY_SUPERSPEED_SPEEDS_SUPPORTED_FULL 0x0002
|
---|
334 | #define USB_DEVICE_CAPABILITY_SUPERSPEED_SPEEDS_SUPPORTED_HIGH 0x0004
|
---|
335 | #define USB_DEVICE_CAPABILITY_SUPERSPEED_SPEEDS_SUPPORTED_SUPER 0x0008
|
---|
336 |
|
---|
337 | #define USB_DEVICE_CAPABILITY_SUPERSPEED_SPEEDS_SUPPORTED_LOW 0x0001
|
---|
338 | #define USB_DEVICE_CAPABILITY_SUPERSPEED_SPEEDS_SUPPORTED_FULL 0x0002
|
---|
339 | #define USB_DEVICE_CAPABILITY_SUPERSPEED_SPEEDS_SUPPORTED_HIGH 0x0004
|
---|
340 | #define USB_DEVICE_CAPABILITY_SUPERSPEED_SPEEDS_SUPPORTED_SUPER 0x0008
|
---|
341 |
|
---|
342 | #define USB_DEVICE_CAPABILITY_SUPERSPEED_U1_DEVICE_EXIT_MAX_VALUE 0x0a
|
---|
343 |
|
---|
344 | #define USB_DEVICE_CAPABILITY_SUPERSPEED_U2_DEVICE_EXIT_MAX_VALUE 0x07ff
|
---|
345 |
|
---|
346 | #define USB_DEVICE_CAPABILITY_MAX_U1_LATENCY 0x0a
|
---|
347 | #define USB_DEVICE_CAPABILITY_MAX_U2_LATENCY 0x07ff
|
---|
348 |
|
---|
349 | #define USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_LSE_BPS 0
|
---|
350 | #define USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_LSE_KBPS 1
|
---|
351 | #define USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_LSE_MBPS 2
|
---|
352 | #define USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_LSE_GBPS 3
|
---|
353 |
|
---|
354 | #define USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_MODE_SYMMETRIC 0
|
---|
355 | #define USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_MODE_ASYMMETRIC 1
|
---|
356 | #define USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_DIR_RX 0
|
---|
357 | #define USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_DIR_TX 1
|
---|
358 |
|
---|
359 | #define USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_PROTOCOL_SS 0
|
---|
360 | #define USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_PROTOCOL_SSP 1
|
---|
361 |
|
---|
362 | typedef union _USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED {
|
---|
363 | ULONG AsUlong32;
|
---|
364 | __C89_NAMELESS struct {
|
---|
365 | ULONG SublinkSpeedAttrID:4;
|
---|
366 | ULONG LaneSpeedExponent:2;
|
---|
367 | ULONG SublinkTypeMode:1;
|
---|
368 | ULONG SublinkTypeDir:1;
|
---|
369 | ULONG Reserved:6;
|
---|
370 | ULONG LinkProtocol:2;
|
---|
371 | ULONG LaneSpeedMantissa:16;
|
---|
372 | };
|
---|
373 | } USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED,*PUSB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED;
|
---|
374 |
|
---|
375 | typedef struct _USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_USB_DESCRIPTOR {
|
---|
376 | UCHAR bLength;
|
---|
377 | UCHAR bDescriptorType;
|
---|
378 | UCHAR bDevCapabilityType;
|
---|
379 | UCHAR bReserved;
|
---|
380 | union {
|
---|
381 | ULONG AsUlong;
|
---|
382 | __C89_NAMELESS struct {
|
---|
383 | ULONG SublinkSpeedAttrCount:5;
|
---|
384 | ULONG SublinkSpeedIDCount:4;
|
---|
385 | ULONG Reserved:23;
|
---|
386 | };
|
---|
387 | } bmAttributes;
|
---|
388 | union {
|
---|
389 | USHORT AsUshort;
|
---|
390 | __C89_NAMELESS struct {
|
---|
391 | USHORT SublinkSpeedAttrID:4;
|
---|
392 | USHORT Reserved:4;
|
---|
393 | USHORT MinRxLaneCount:4;
|
---|
394 | USHORT MinTxLaneCount:4;
|
---|
395 | };
|
---|
396 | } wFunctionalitySupport;
|
---|
397 | USHORT wReserved;
|
---|
398 | USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED bmSublinkSpeedAttr[1];
|
---|
399 | } USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_USB_DESCRIPTOR,*PUSB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_USB_DESCRIPTOR;
|
---|
400 |
|
---|
401 | typedef struct _USB_DEVICE_CAPABILITY_CONTAINER_ID_DESCRIPTOR {
|
---|
402 | UCHAR bLength;
|
---|
403 | UCHAR bDescriptorType;
|
---|
404 | UCHAR bDevCapabilityType;
|
---|
405 | UCHAR bReserved;
|
---|
406 | UCHAR ContainerID[16];
|
---|
407 | } USB_DEVICE_CAPABILITY_CONTAINER_ID_DESCRIPTOR,*PUSB_DEVICE_CAPABILITY_CONTAINER_ID_DESCRIPTOR;
|
---|
408 |
|
---|
409 | typedef struct _USB_DEVICE_CAPABILITY_PLATFORM_DESCRIPTOR {
|
---|
410 | UCHAR bLength;
|
---|
411 | UCHAR bDescriptorType;
|
---|
412 | UCHAR bDevCapabilityType;
|
---|
413 | UCHAR bReserved;
|
---|
414 | GUID PlatformCapabilityUuid;
|
---|
415 | UCHAR CapabililityData[1];
|
---|
416 | } USB_DEVICE_CAPABILITY_PLATFORM_DESCRIPTOR,*PUSB_DEVICE_CAPABILITY_PLATFORM_DESCRIPTOR;
|
---|
417 |
|
---|
418 | typedef struct _USB_DEVICE_CAPABILITY_BILLBOARD_DESCRIPTOR {
|
---|
419 | UCHAR bLength;
|
---|
420 | UCHAR bDescriptorType;
|
---|
421 | UCHAR bDevCapabilityType;
|
---|
422 | UCHAR iAddtionalInfoURL;
|
---|
423 | UCHAR bNumberOfAlternateModes;
|
---|
424 | UCHAR bPreferredAlternateMode;
|
---|
425 | union {
|
---|
426 | USHORT AsUshort;
|
---|
427 | __C89_NAMELESS struct {
|
---|
428 | USHORT VConnPowerNeededForFullFunctionality:3;
|
---|
429 | USHORT Reserved:12;
|
---|
430 | USHORT NoVconnPowerRequired:1;
|
---|
431 | };
|
---|
432 | } VconnPower;
|
---|
433 | UCHAR bmConfigured[32];
|
---|
434 | ULONG bReserved;
|
---|
435 | __C89_NAMELESS struct {
|
---|
436 | USHORT wSVID;
|
---|
437 | UCHAR bAlternateMode;
|
---|
438 | UCHAR iAlternateModeSetting;
|
---|
439 | } AlternateMode[1];
|
---|
440 | } USB_DEVICE_CAPABILITY_BILLBOARD_DESCRIPTOR,*PUSB_DEVICE_CAPABILITY_BILLBOARD_DESCRIPTOR;
|
---|
441 |
|
---|
442 | DEFINE_GUID(GUID_USB_MSOS20_PLATFORM_CAPABILITY_ID, 0xD8DD60DF, 0x4589, 0x4CC7, 0x9C, 0xD2, 0x65, 0x9D, 0x9E, 0x64, 0x8A, 0x9F);
|
---|
443 |
|
---|
444 | typedef struct _USB_DEVICE_CAPABILITY_DESCRIPTOR {
|
---|
445 | UCHAR bLength;
|
---|
446 | UCHAR bDescriptorType;
|
---|
447 | UCHAR bDevCapabilityType;
|
---|
448 | } USB_DEVICE_CAPABILITY_DESCRIPTOR,*PUSB_DEVICE_CAPABILITY_DESCRIPTOR;
|
---|
449 |
|
---|
450 | typedef struct _USB_CONFIGURATION_DESCRIPTOR {
|
---|
451 | UCHAR bLength;
|
---|
452 | UCHAR bDescriptorType;
|
---|
453 | USHORT wTotalLength;
|
---|
454 | UCHAR bNumInterfaces;
|
---|
455 | UCHAR bConfigurationValue;
|
---|
456 | UCHAR iConfiguration;
|
---|
457 | UCHAR bmAttributes;
|
---|
458 | UCHAR MaxPower;
|
---|
459 | } USB_CONFIGURATION_DESCRIPTOR,*PUSB_CONFIGURATION_DESCRIPTOR;
|
---|
460 |
|
---|
461 | #define USB_CONFIG_POWERED_MASK 0xc0
|
---|
462 | #define USB_CONFIG_BUS_POWERED 0x80
|
---|
463 | #define USB_CONFIG_SELF_POWERED 0x40
|
---|
464 | #define USB_CONFIG_REMOTE_WAKEUP 0x20
|
---|
465 | #define USB_CONFIG_RESERVED 0x1f
|
---|
466 |
|
---|
467 | typedef struct _USB_INTERFACE_ASSOCIATION_DESCRIPTOR {
|
---|
468 | UCHAR bLength;
|
---|
469 | UCHAR bDescriptorType;
|
---|
470 | UCHAR bFirstInterface;
|
---|
471 | UCHAR bInterfaceCount;
|
---|
472 | UCHAR bFunctionClass;
|
---|
473 | UCHAR bFunctionSubClass;
|
---|
474 | UCHAR bFunctionProtocol;
|
---|
475 | UCHAR iFunction;
|
---|
476 | } USB_INTERFACE_ASSOCIATION_DESCRIPTOR,*PUSB_INTERFACE_ASSOCIATION_DESCRIPTOR;
|
---|
477 |
|
---|
478 | typedef struct _USB_INTERFACE_DESCRIPTOR {
|
---|
479 | UCHAR bLength;
|
---|
480 | UCHAR bDescriptorType;
|
---|
481 | UCHAR bInterfaceNumber;
|
---|
482 | UCHAR bAlternateSetting;
|
---|
483 | UCHAR bNumEndpoints;
|
---|
484 | UCHAR bInterfaceClass;
|
---|
485 | UCHAR bInterfaceSubClass;
|
---|
486 | UCHAR bInterfaceProtocol;
|
---|
487 | UCHAR iInterface;
|
---|
488 | } USB_INTERFACE_DESCRIPTOR,*PUSB_INTERFACE_DESCRIPTOR;
|
---|
489 |
|
---|
490 | typedef struct _USB_ENDPOINT_DESCRIPTOR {
|
---|
491 | UCHAR bLength;
|
---|
492 | UCHAR bDescriptorType;
|
---|
493 | UCHAR bEndpointAddress;
|
---|
494 | UCHAR bmAttributes;
|
---|
495 | USHORT wMaxPacketSize;
|
---|
496 | UCHAR bInterval;
|
---|
497 | } USB_ENDPOINT_DESCRIPTOR,*PUSB_ENDPOINT_DESCRIPTOR;
|
---|
498 |
|
---|
499 | #define USB_ENDPOINT_DIRECTION_MASK 0x80
|
---|
500 | #define USB_ENDPOINT_DIRECTION_OUT(addr) (! ((addr) & USB_ENDPOINT_DIRECTION_MASK))
|
---|
501 | #define USB_ENDPOINT_DIRECTION_IN(addr) ((addr) & USB_ENDPOINT_DIRECTION_MASK)
|
---|
502 |
|
---|
503 | #define USB_ENDPOINT_ADDRESS_MASK 0x0f
|
---|
504 |
|
---|
505 | #define USB_ENDPOINT_TYPE_MASK 0x03
|
---|
506 | #define USB_ENDPOINT_TYPE_CONTROL 0x00
|
---|
507 | #define USB_ENDPOINT_TYPE_ISOCHRONOUS 0x01
|
---|
508 | #define USB_ENDPOINT_TYPE_BULK 0x02
|
---|
509 | #define USB_ENDPOINT_TYPE_INTERRUPT 0x03
|
---|
510 |
|
---|
511 | #define USB_ENDPOINT_TYPE_BULK_RESERVED_MASK 0xfc
|
---|
512 | #define USB_ENDPOINT_TYPE_CONTROL_RESERVED_MASK 0xfc
|
---|
513 | #define USB_20_ENDPOINT_TYPE_INTERRUPT_RESERVED_MASK 0xfc
|
---|
514 | #define USB_30_ENDPOINT_TYPE_INTERRUPT_RESERVED_MASK 0xcc
|
---|
515 | #define USB_ENDPOINT_TYPE_ISOCHRONOUS_RESERVED_MASK 0xc0
|
---|
516 |
|
---|
517 | #define USB_30_ENDPOINT_TYPE_INTERRUPT_USAGE_MASK 0x30
|
---|
518 | #define USB_30_ENDPOINT_TYPE_INTERRUPT_USAGE_PERIODIC 0x00
|
---|
519 | #define USB_30_ENDPOINT_TYPE_INTERRUPT_USAGE_NOTIFICATION 0x10
|
---|
520 | #define USB_30_ENDPOINT_TYPE_INTERRUPT_USAGE_RESERVED10 0x20
|
---|
521 | #define USB_30_ENDPOINT_TYPE_INTERRUPT_USAGE_RESERVED11 0x30
|
---|
522 | #define USB_30_ENDPOINT_TYPE_INTERRUPT_USAGE(bmAttr) (bmAttr &USB_30_ENDPOINT_TYPE_INTERRUPT_USAGE_MASK)
|
---|
523 |
|
---|
524 | #define USB_ENDPOINT_TYPE_ISOCHRONOUS_SYNCHRONIZATION_MASK 0x0c
|
---|
525 | #define USB_ENDPOINT_TYPE_ISOCHRONOUS_SYNCHRONIZATION_NO_SYNCHRONIZATION 0x00
|
---|
526 | #define USB_ENDPOINT_TYPE_ISOCHRONOUS_SYNCHRONIZATION_ASYNCHRONOUS 0x04
|
---|
527 | #define USB_ENDPOINT_TYPE_ISOCHRONOUS_SYNCHRONIZATION_ADAPTIVE 0x08
|
---|
528 | #define USB_ENDPOINT_TYPE_ISOCHRONOUS_SYNCHRONIZATION_SYNCHRONOUS 0x0c
|
---|
529 | #define USB_ENDPOINT_TYPE_ISOCHRONOUS_SYNCHRONIZATION(bmAttr) (bmAttr &USB_ENDPOINT_TYPE_ISOCHRONOUS_SYNCHRONIZATION_MASK)
|
---|
530 |
|
---|
531 | #define USB_ENDPOINT_TYPE_ISOCHRONOUS_USAGE_MASK 0x30
|
---|
532 | #define USB_ENDPOINT_TYPE_ISOCHRONOUS_USAGE_DATA_ENDOINT 0x00
|
---|
533 | #define USB_ENDPOINT_TYPE_ISOCHRONOUS_USAGE_FEEDBACK_ENDPOINT 0x10
|
---|
534 | #define USB_ENDPOINT_TYPE_ISOCHRONOUS_USAGE_IMPLICIT_FEEDBACK_DATA_ENDPOINT 0x20
|
---|
535 | #define USB_ENDPOINT_TYPE_ISOCHRONOUS_USAGE_RESERVED 0x30
|
---|
536 | #define USB_ENDPOINT_TYPE_ISOCHRONOUS_USAGE(bmAttr) (bmAttr &USB_ENDPOINT_TYPE_ISOCHRONOUS_USAGE_MASK)
|
---|
537 |
|
---|
538 | typedef union _USB_HIGH_SPEED_MAXPACKET {
|
---|
539 | __C89_NAMELESS struct _MP {
|
---|
540 | USHORT MaxPacket : 11;
|
---|
541 | USHORT HSmux : 2;
|
---|
542 | USHORT Reserved : 3;
|
---|
543 | };
|
---|
544 | USHORT us;
|
---|
545 | } USB_HIGH_SPEED_MAXPACKET,*PUSB_HIGH_SPEED_MAXPACKET;
|
---|
546 |
|
---|
547 | #define USB_ENDPOINT_SUPERSPEED_BULK_MAX_PACKET_SIZE 1024
|
---|
548 | #define USB_ENDPOINT_SUPERSPEED_CONTROL_MAX_PACKET_SIZE 512
|
---|
549 | #define USB_ENDPOINT_SUPERSPEED_ISO_MAX_PACKET_SIZE 1024
|
---|
550 | #define USB_ENDPOINT_SUPERSPEED_INTERRUPT_MAX_PACKET_SIZE 1024
|
---|
551 |
|
---|
552 | typedef struct _USB_STRING_DESCRIPTOR {
|
---|
553 | UCHAR bLength;
|
---|
554 | UCHAR bDescriptorType;
|
---|
555 | WCHAR bString[1];
|
---|
556 | } USB_STRING_DESCRIPTOR,*PUSB_STRING_DESCRIPTOR;
|
---|
557 |
|
---|
558 | #define MAXIMUM_USB_STRING_LENGTH 255
|
---|
559 |
|
---|
560 | typedef struct _USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR {
|
---|
561 | UCHAR bLength;
|
---|
562 | UCHAR bDescriptorType;
|
---|
563 | UCHAR bMaxBurst;
|
---|
564 | union {
|
---|
565 | UCHAR AsUchar;
|
---|
566 | struct {
|
---|
567 | UCHAR MaxStreams:5;
|
---|
568 | UCHAR Reserved1:3;
|
---|
569 | } Bulk;
|
---|
570 | struct {
|
---|
571 | UCHAR Mult:2;
|
---|
572 | UCHAR Reserved2:5;
|
---|
573 | UCHAR SspCompanion:1;
|
---|
574 | } Isochronous;
|
---|
575 | } bmAttributes;
|
---|
576 | USHORT wBytesPerInterval;
|
---|
577 | } USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR,*PUSB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR;
|
---|
578 |
|
---|
579 | #define USB_SUPERSPEED_ISOCHRONOUS_MAX_MULTIPLIER 2
|
---|
580 |
|
---|
581 | typedef struct _USB_SUPERSPEEDPLUS_ISOCH_ENDPOINT_COMPANION_DESCRIPTOR {
|
---|
582 | UCHAR bLength;
|
---|
583 | UCHAR bDescriptorType;
|
---|
584 | USHORT wReserved;
|
---|
585 | ULONG dwBytesPerInterval;
|
---|
586 | } USB_SUPERSPEEDPLUS_ISOCH_ENDPOINT_COMPANION_DESCRIPTOR,*PUSB_SUPERSPEEDPLUS_ISOCH_ENDPOINT_COMPANION_DESCRIPTOR;
|
---|
587 |
|
---|
588 | #define USB_SUPERSPEEDPLUS_ISOCHRONOUS_MIN_BYTESPERINTERVAL 0xc001
|
---|
589 | #define USB_SUPERSPEEDPLUS_ISOCHRONOUS_MAX_BYTESPERINTERVAL 0xffffff
|
---|
590 |
|
---|
591 | typedef struct _USB_HUB_DESCRIPTOR {
|
---|
592 | UCHAR bDescriptorLength;
|
---|
593 | UCHAR bDescriptorType;
|
---|
594 | UCHAR bNumberOfPorts;
|
---|
595 | USHORT wHubCharacteristics;
|
---|
596 | UCHAR bPowerOnToPowerGood;
|
---|
597 | UCHAR bHubControlCurrent;
|
---|
598 | UCHAR bRemoveAndPowerMask[64];
|
---|
599 | } USB_HUB_DESCRIPTOR,*PUSB_HUB_DESCRIPTOR;
|
---|
600 |
|
---|
601 | #define USB_20_HUB_DESCRIPTOR_TYPE 0x29
|
---|
602 |
|
---|
603 | typedef struct _USB_30_HUB_DESCRIPTOR {
|
---|
604 | UCHAR bLength;
|
---|
605 | UCHAR bDescriptorType;
|
---|
606 | UCHAR bNumberOfPorts;
|
---|
607 | USHORT wHubCharacteristics;
|
---|
608 | UCHAR bPowerOnToPowerGood;
|
---|
609 | UCHAR bHubControlCurrent;
|
---|
610 | UCHAR bHubHdrDecLat;
|
---|
611 | USHORT wHubDelay;
|
---|
612 | USHORT DeviceRemovable;
|
---|
613 | } USB_30_HUB_DESCRIPTOR,*PUSB_30_HUB_DESCRIPTOR;
|
---|
614 |
|
---|
615 | #define USB_30_HUB_DESCRIPTOR_TYPE 0x2a
|
---|
616 |
|
---|
617 | #define USB_REQUEST_GET_STATE 0x02
|
---|
618 |
|
---|
619 | #define USB_REQUEST_CLEAR_TT_BUFFER 0x08
|
---|
620 | #define USB_REQUEST_RESET_TT 0x09
|
---|
621 | #define USB_REQUEST_GET_TT_STATE 0x0a
|
---|
622 | #define USB_REQUEST_STOP_TT 0x0b
|
---|
623 |
|
---|
624 | #define USB_REQUEST_SET_HUB_DEPTH 0x0c
|
---|
625 | #define USB_REQUEST_GET_PORT_ERR_COUNT 0x0d
|
---|
626 |
|
---|
627 | typedef union _USB_HUB_STATUS {
|
---|
628 | USHORT AsUshort16;
|
---|
629 | __C89_NAMELESS struct {
|
---|
630 | USHORT LocalPowerLost:1;
|
---|
631 | USHORT OverCurrent:1;
|
---|
632 | USHORT Reserved:14;
|
---|
633 | };
|
---|
634 | } USB_HUB_STATUS,*PUSB_HUB_STATUS;
|
---|
635 |
|
---|
636 | typedef union _USB_HUB_CHANGE {
|
---|
637 | USHORT AsUshort16;
|
---|
638 | __C89_NAMELESS struct {
|
---|
639 | USHORT LocalPowerChange:1;
|
---|
640 | USHORT OverCurrentChange:1;
|
---|
641 | USHORT Reserved:14;
|
---|
642 | };
|
---|
643 | } USB_HUB_CHANGE,*PUSB_HUB_CHANGE;
|
---|
644 |
|
---|
645 | typedef union _USB_HUB_STATUS_AND_CHANGE {
|
---|
646 | ULONG AsUlong32;
|
---|
647 | __C89_NAMELESS struct {
|
---|
648 | USB_HUB_STATUS HubStatus;
|
---|
649 | USB_HUB_CHANGE HubChange;
|
---|
650 | };
|
---|
651 | } USB_HUB_STATUS_AND_CHANGE,*PUSB_HUB_STATUS_AND_CHANGE;
|
---|
652 |
|
---|
653 | typedef union _USB_20_PORT_STATUS {
|
---|
654 | USHORT AsUshort16;
|
---|
655 | __C89_NAMELESS struct {
|
---|
656 | USHORT CurrentConnectStatus:1;
|
---|
657 | USHORT PortEnabledDisabled:1;
|
---|
658 | USHORT Suspend:1;
|
---|
659 | USHORT OverCurrent:1;
|
---|
660 | USHORT Reset:1;
|
---|
661 | USHORT Reserved0:3;
|
---|
662 | USHORT PortPower:1;
|
---|
663 | USHORT LowSpeedDeviceAttached:1;
|
---|
664 | USHORT HighSpeedDeviceAttached:1;
|
---|
665 | USHORT PortTestMode:1;
|
---|
666 | USHORT PortIndicatorControl:1;
|
---|
667 | USHORT Reserved1:3;
|
---|
668 | };
|
---|
669 | } USB_20_PORT_STATUS,*PUSB_20_PORT_STATUS;
|
---|
670 |
|
---|
671 | #define USB_PORT_STATUS_CONNECT 0x0001
|
---|
672 | #define USB_PORT_STATUS_ENABLE 0x0002
|
---|
673 | #define USB_PORT_STATUS_SUSPEND 0x0004
|
---|
674 | #define USB_PORT_STATUS_OVER_CURRENT 0x0008
|
---|
675 | #define USB_PORT_STATUS_RESET 0x0010
|
---|
676 | #define USB_PORT_STATUS_POWER 0x0100
|
---|
677 | #define USB_PORT_STATUS_LOW_SPEED 0x0200
|
---|
678 | #define USB_PORT_STATUS_HIGH_SPEED 0x0400
|
---|
679 |
|
---|
680 | typedef union _USB_20_PORT_CHANGE {
|
---|
681 | USHORT AsUshort16;
|
---|
682 | __C89_NAMELESS struct {
|
---|
683 | USHORT ConnectStatusChange:1;
|
---|
684 | USHORT PortEnableDisableChange:1;
|
---|
685 | USHORT SuspendChange:1;
|
---|
686 | USHORT OverCurrentIndicatorChange:1;
|
---|
687 | USHORT ResetChange:1;
|
---|
688 | USHORT Reserved2:11;
|
---|
689 | };
|
---|
690 | } USB_20_PORT_CHANGE,*PUSB_20_PORT_CHANGE;
|
---|
691 |
|
---|
692 | typedef union _USB_30_PORT_STATUS {
|
---|
693 | USHORT AsUshort16;
|
---|
694 | __C89_NAMELESS struct {
|
---|
695 | USHORT CurrentConnectStatus:1;
|
---|
696 | USHORT PortEnabledDisabled:1;
|
---|
697 | USHORT Reserved0:1;
|
---|
698 | USHORT OverCurrent:1;
|
---|
699 | USHORT Reset:1;
|
---|
700 | USHORT PortLinkState:4;
|
---|
701 | USHORT PortPower:1;
|
---|
702 | USHORT NegotiatedDeviceSpeed:3;
|
---|
703 | USHORT Reserved1:3;
|
---|
704 | };
|
---|
705 | } USB_30_PORT_STATUS,*PUSB_30_PORT_STATUS;
|
---|
706 |
|
---|
707 | #define PORT_LINK_STATE_U0 0
|
---|
708 | #define PORT_LINK_STATE_U1 1
|
---|
709 | #define PORT_LINK_STATE_U2 2
|
---|
710 | #define PORT_LINK_STATE_U3 3
|
---|
711 | #define PORT_LINK_STATE_DISABLED 4
|
---|
712 | #define PORT_LINK_STATE_RX_DETECT 5
|
---|
713 | #define PORT_LINK_STATE_INACTIVE 6
|
---|
714 | #define PORT_LINK_STATE_POLLING 7
|
---|
715 | #define PORT_LINK_STATE_RECOVERY 8
|
---|
716 | #define PORT_LINK_STATE_HOT_RESET 9
|
---|
717 | #define PORT_LINK_STATE_COMPLIANCE_MODE 10
|
---|
718 | #define PORT_LINK_STATE_LOOPBACK 11
|
---|
719 | #define PORT_LINK_STATE_TEST_MODE 11
|
---|
720 |
|
---|
721 | typedef union _USB_30_PORT_CHANGE {
|
---|
722 | USHORT AsUshort16;
|
---|
723 | __C89_NAMELESS struct {
|
---|
724 | USHORT ConnectStatusChange:1;
|
---|
725 | USHORT Reserved2:2;
|
---|
726 | USHORT OverCurrentIndicatorChange:1;
|
---|
727 | USHORT ResetChange:1;
|
---|
728 | USHORT BHResetChange:1;
|
---|
729 | USHORT PortLinkStateChange:1;
|
---|
730 | USHORT PortConfigErrorChange:1;
|
---|
731 | USHORT Reserved3:8;
|
---|
732 | };
|
---|
733 | } USB_30_PORT_CHANGE,*PUSB_30_PORT_CHANGE;
|
---|
734 |
|
---|
735 | typedef union _USB_PORT_STATUS {
|
---|
736 | USHORT AsUshort16;
|
---|
737 | USB_20_PORT_STATUS Usb20PortStatus;
|
---|
738 | USB_30_PORT_STATUS Usb30PortStatus;
|
---|
739 | } USB_PORT_STATUS,*PUSB_PORT_STATUS;
|
---|
740 |
|
---|
741 | typedef union _USB_PORT_CHANGE {
|
---|
742 | USHORT AsUshort16;
|
---|
743 | USB_20_PORT_CHANGE Usb20PortChange;
|
---|
744 | USB_30_PORT_CHANGE Usb30PortChange;
|
---|
745 | } USB_PORT_CHANGE,*PUSB_PORT_CHANGE;
|
---|
746 |
|
---|
747 | typedef union _USB_PORT_EXT_STATUS {
|
---|
748 | ULONG AsUlong32;
|
---|
749 | __C89_NAMELESS struct {
|
---|
750 | ULONG RxSublinkSpeedID:4;
|
---|
751 | ULONG TxSublinkSpeedID:4;
|
---|
752 | ULONG RxLaneCount:4;
|
---|
753 | ULONG TxLaneCount:4;
|
---|
754 | ULONG Reserved:16;
|
---|
755 | };
|
---|
756 | } USB_PORT_EXT_STATUS,*PUSB_PORT_EXT_STATUS;
|
---|
757 |
|
---|
758 | typedef union _USB_PORT_STATUS_AND_CHANGE {
|
---|
759 | ULONG AsUlong32;
|
---|
760 | __C89_NAMELESS struct {
|
---|
761 | USB_PORT_STATUS PortStatus;
|
---|
762 | USB_PORT_CHANGE PortChange;
|
---|
763 | };
|
---|
764 | } USB_PORT_STATUS_AND_CHANGE,*PUSB_PORT_STATUS_AND_CHANGE;
|
---|
765 |
|
---|
766 | typedef union _USB_PORT_EXT_STATUS_AND_CHANGE {
|
---|
767 | ULONG64 AsUlong64;
|
---|
768 | __C89_NAMELESS struct {
|
---|
769 | USB_PORT_STATUS_AND_CHANGE PortStatusChange;
|
---|
770 | USB_PORT_EXT_STATUS PortExtStatus;
|
---|
771 | };
|
---|
772 | } USB_PORT_EXT_STATUS_AND_CHANGE,*PUSB_PORT_EXT_STATUS_AND_CHANGE;
|
---|
773 |
|
---|
774 | typedef union _USB_HUB_30_PORT_REMOTE_WAKE_MASK {
|
---|
775 | UCHAR AsUchar8;
|
---|
776 | __C89_NAMELESS struct {
|
---|
777 | UCHAR ConnectRemoteWakeEnable:1;
|
---|
778 | UCHAR DisconnectRemoteWakeEnable:1;
|
---|
779 | UCHAR OverCurrentRemoteWakeEnable:1;
|
---|
780 | UCHAR Reserved0:5;
|
---|
781 | };
|
---|
782 | } USB_HUB_30_PORT_REMOTE_WAKE_MASK,*PUSB_HUB_30_PORT_REMOTE_WAKE_MASK;
|
---|
783 |
|
---|
784 | typedef union _USB_FUNCTION_SUSPEND_OPTIONS {
|
---|
785 | UCHAR AsUchar;
|
---|
786 | __C89_NAMELESS struct {
|
---|
787 | UCHAR PowerState:1;
|
---|
788 | UCHAR RemoteWakeEnabled:1;
|
---|
789 | UCHAR Reserved:6;
|
---|
790 | };
|
---|
791 | } USB_FUNCTION_SUSPEND_OPTIONS,*PUSB_FUNCTION_SUSPEND_OPTIONS;
|
---|
792 |
|
---|
793 | #define USB_FEATURE_INTERFACE_POWER_D0 0x0002
|
---|
794 | #define USB_FEATURE_INTERFACE_POWER_D1 0x0003
|
---|
795 | #define USB_FEATURE_INTERFACE_POWER_D2 0x0004
|
---|
796 | #define USB_FEATURE_INTERFACE_POWER_D3 0x0005
|
---|
797 |
|
---|
798 | #define USB_SUPPORT_D0_COMMAND 0x01
|
---|
799 | #define USB_SUPPORT_D1_COMMAND 0x02
|
---|
800 | #define USB_SUPPORT_D2_COMMAND 0x04
|
---|
801 | #define USB_SUPPORT_D3_COMMAND 0x08
|
---|
802 | #define USB_SUPPORT_D1_WAKEUP 0x10
|
---|
803 | #define USB_SUPPORT_D2_WAKEUP 0x20
|
---|
804 |
|
---|
805 | typedef struct _USB_CONFIGURATION_POWER_DESCRIPTOR {
|
---|
806 | UCHAR bLength;
|
---|
807 | UCHAR bDescriptorType;
|
---|
808 | UCHAR SelfPowerConsumedD0[3];
|
---|
809 | UCHAR bPowerSummaryId;
|
---|
810 | UCHAR bBusPowerSavingD1;
|
---|
811 | UCHAR bSelfPowerSavingD1;
|
---|
812 | UCHAR bBusPowerSavingD2;
|
---|
813 | UCHAR bSelfPowerSavingD2;
|
---|
814 | UCHAR bBusPowerSavingD3;
|
---|
815 | UCHAR bSelfPowerSavingD3;
|
---|
816 | USHORT TransitionTimeFromD1;
|
---|
817 | USHORT TransitionTimeFromD2;
|
---|
818 | USHORT TransitionTimeFromD3;
|
---|
819 | } USB_CONFIGURATION_POWER_DESCRIPTOR,*PUSB_CONFIGURATION_POWER_DESCRIPTOR;
|
---|
820 |
|
---|
821 | typedef struct _USB_INTERFACE_POWER_DESCRIPTOR {
|
---|
822 | UCHAR bLength;
|
---|
823 | UCHAR bDescriptorType;
|
---|
824 | UCHAR bmCapabilitiesFlags;
|
---|
825 | UCHAR bBusPowerSavingD1;
|
---|
826 | UCHAR bSelfPowerSavingD1;
|
---|
827 | UCHAR bBusPowerSavingD2;
|
---|
828 | UCHAR bSelfPowerSavingD2;
|
---|
829 | UCHAR bBusPowerSavingD3;
|
---|
830 | UCHAR bSelfPowerSavingD3;
|
---|
831 | USHORT TransitionTimeFromD1;
|
---|
832 | USHORT TransitionTimeFromD2;
|
---|
833 | USHORT TransitionTimeFromD3;
|
---|
834 | } USB_INTERFACE_POWER_DESCRIPTOR,*PUSB_INTERFACE_POWER_DESCRIPTOR;
|
---|
835 |
|
---|
836 | #include <poppack.h>
|
---|
837 |
|
---|
838 | #endif
|
---|
839 | #endif
|
---|