ReactOS 0.4.17-dev-1037-g720d112
usb300.h
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS SDK
3 * LICENSE: MIT (https://spdx.org/licenses/MIT)
4 * PURPOSE: USB 3.x definitions
5 * COPYRIGHT: Copyright 2026 Justin Miller <justinmiller100@gmail.com>
6 */
7
8#pragma once
9
10#include "usb200.h"
11
12#include <pshpack1.h>
13
14/* USB 3.x descriptor types */
15#define USB_OTG_DESCRIPTOR_TYPE 0x09
16#define USB_DEBUG_DESCRIPTOR_TYPE 0x0A
17#define USB_BOS_DESCRIPTOR_TYPE 0x0F
18#define USB_DEVICE_CAPABILITY_DESCRIPTOR_TYPE 0x10
19#define USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR_TYPE 0x30
20#define USB_SUPERSPEEDPLUS_ISOCH_ENDPOINT_COMPANION_DESCRIPTOR_TYPE 0x31
21
22#define USB_FEATURE_BATTERY_WAKE_MASK 0x28
23
24/* bDevCapabilityType of a BOS device capability descriptor */
25#define USB_DEVICE_CAPABILITY_WIRELESS_USB 0x01
26#define USB_DEVICE_CAPABILITY_USB20_EXTENSION 0x02
27#define USB_DEVICE_CAPABILITY_SUPERSPEED_USB 0x03
28#define USB_DEVICE_CAPABILITY_CONTAINER_ID 0x04
29#define USB_DEVICE_CAPABILITY_PLATFORM 0x05
30#define USB_DEVICE_CAPABILITY_POWER_DELIVERY 0x06
31#define USB_DEVICE_CAPABILITY_BATTERY_INFO 0x07
32#define USB_DEVICE_CAPABILITY_PD_CONSUMER_PORT 0x08
33#define USB_DEVICE_CAPABILITY_PD_PROVIDER_PORT 0x09
34#define USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_USB 0x0A
35#define USB_DEVICE_CAPABILITY_PRECISION_TIME_MEASUREMENT 0x0B
36#define USB_DEVICE_CAPABILITY_BILLBOARD 0x0D
37#define USB_DEVICE_CAPABILITY_FIRMWARE_STATUS 0x11
38
39#define USB_DEVICE_CAPABILITY_USB20_EXTENSION_BMATTRIBUTES_RESERVED_MASK 0xFFFF00E1
40
41#define USB_DEVICE_CAPABILITY_SUPERSPEED_BMATTRIBUTES_RESERVED_MASK 0xFD
42#define USB_DEVICE_CAPABILITY_SUPERSPEED_BMATTRIBUTES_LTM_CAPABLE 0x02
43#define USB_DEVICE_CAPABILITY_SUPERSPEED_SPEEDS_SUPPORTED_RESERVED_MASK 0xFFF0
44#define USB_DEVICE_CAPABILITY_SUPERSPEED_SPEEDS_SUPPORTED_LOW 0x0001
45#define USB_DEVICE_CAPABILITY_SUPERSPEED_SPEEDS_SUPPORTED_FULL 0x0002
46#define USB_DEVICE_CAPABILITY_SUPERSPEED_SPEEDS_SUPPORTED_HIGH 0x0004
47#define USB_DEVICE_CAPABILITY_SUPERSPEED_SPEEDS_SUPPORTED_SUPER 0x0008
48#define USB_DEVICE_CAPABILITY_SUPERSPEED_U1_DEVICE_EXIT_MAX_VALUE 0x0A
49#define USB_DEVICE_CAPABILITY_SUPERSPEED_U2_DEVICE_EXIT_MAX_VALUE 0x07FF
50#define USB_DEVICE_CAPABILITY_MAX_U1_LATENCY 0x0A
51#define USB_DEVICE_CAPABILITY_MAX_U2_LATENCY 0x07FF
52
53#define USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_LSE_BPS 0
54#define USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_LSE_KBPS 1
55#define USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_LSE_MBPS 2
56#define USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_LSE_GBPS 3
57#define USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_MODE_SYMMETRIC 0
58#define USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_MODE_ASYMMETRIC 1
59#define USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_DIR_RX 0
60#define USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_DIR_TX 1
61#define USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_PROTOCOL_SS 0
62#define USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_PROTOCOL_SSP 1
63
64#define USB_ENDPOINT_ADDRESS_MASK 0x0F
65#define USB_ENDPOINT_TYPE_BULK_RESERVED_MASK 0xFC
66#define USB_ENDPOINT_TYPE_CONTROL_RESERVED_MASK 0xFC
67#define USB_20_ENDPOINT_TYPE_INTERRUPT_RESERVED_MASK 0xFC
68#define USB_30_ENDPOINT_TYPE_INTERRUPT_RESERVED_MASK 0xCC
69#define USB_30_ENDPOINT_TYPE_INTERRUPT_USAGE_MASK 0x30
70#define USB_ENDPOINT_TYPE_ISOCHRONOUS_RESERVED_MASK 0xC0
71#define USB_ENDPOINT_TYPE_ISOCHRONOUS_SYNCHRONIZATION_MASK 0x0C
72#define USB_ENDPOINT_TYPE_ISOCHRONOUS_USAGE_MASK 0x30
73
74#define USB_ENDPOINT_SUPERSPEED_BULK_MAX_PACKET_SIZE 1024
75#define USB_ENDPOINT_SUPERSPEED_CONTROL_MAX_PACKET_SIZE 512
76#define USB_ENDPOINT_SUPERSPEED_ISO_MAX_PACKET_SIZE 1024
77#define USB_ENDPOINT_SUPERSPEED_INTERRUPT_MAX_PACKET_SIZE 1024
78
79typedef union _USB_DEVICE_STATUS {
81 struct {
88 };
90
91typedef union _USB_INTERFACE_STATUS {
93 struct {
97 };
99
100typedef struct _USB_BOS_DESCRIPTOR {
106
112
117 union {
119 struct {
129 };
132
143
146 struct {
154 };
156
162 union {
164 struct {
168 };
170 union {
172 struct {
177 };
182
190
199
205 union {
207 struct {
222 };
230
238 union {
240 struct {
244 };
248 struct {
254
259 union {
261 struct {
265 struct {
273
280
281#define USB_SUPERSPEEDPLUS_ISOCHRONOUS_MIN_BYTESPERINTERVAL 0xC001
282#define USB_SUPERSPEEDPLUS_ISOCHRONOUS_MAX_BYTESPERINTERVAL 0xFFFFFF
283
295
296typedef union _USB_PORT_EXT_STATUS {
298 struct {
304 };
306
309 struct {
312 };
314
317 struct {
322 };
324
325/* bRequest of a standard device request */
326#define USB_REQUEST_GET_STATE 0x02
327#define USB_REQUEST_GET_FIRMWARE_STATUS 0x1A
328#define USB_REQUEST_SET_FIRMWARE_STATUS 0x1B
329#define USB_REQUEST_SET_SEL 0x30
330#define USB_REQUEST_ISOCH_DELAY 0x31
331
332/* wValue of SET_FEATURE and CLEAR_FEATURE */
333#define USB_FEATURE_FUNCTION_SUSPEND 0x00
334#define USB_FEATURE_TEST_MODE 0x02
335#define USB_FEATURE_OS_IS_PD_AWARE 0x29
336#define USB_FEATURE_POLICY_MODE 0x2A
337#define USB_FEATURE_U1_ENABLE 0x30
338#define USB_FEATURE_U2_ENABLE 0x31
339#define USB_FEATURE_LTM_ENABLE 0x32
340#define USB_FEATURE_LDM_ENABLE 0x35
341#define USB_FEATURE_CHARGING_POLICY 0x36
342
343#define USB_CHARGING_POLICY_DEFAULT 0x00
344#define USB_CHARGING_POLICY_ICCHPF 0x01
345#define USB_CHARGING_POLICY_ICCLPF 0x02
346#define USB_CHARGING_POLICY_NO_POWER 0x03
347
348/* wIndex of a GET_STATUS carrying a status selector */
349#define USB_STATUS_PORT_STATUS 0x00
350#define USB_STATUS_PD_STATUS 0x01
351#define USB_STATUS_EXT_PORT_STATUS 0x02
352
353/* Platform capability holding an MS OS 2.0 descriptor set */
354DEFINE_GUID(GUID_USB_MSOS20_PLATFORM_CAPABILITY_ID,
355 0xD8DD60DF, 0x4589, 0x4CC7, 0x9C, 0xD2, 0x65, 0x9D, 0x9E, 0x64, 0x8A, 0x9F);
356
357#include <poppack.h>
unsigned __int64 ULONG64
Definition: imports.h:198
unsigned short USHORT
Definition: pedump.c:61
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
Definition: guiddef.h:68
UCHAR bPowerOnToPowerGood
Definition: usb300.h:289
USHORT wHubCharacteristics
Definition: usb300.h:288
USHORT DeviceRemovable
Definition: usb300.h:293
UCHAR bHubControlCurrent
Definition: usb300.h:290
USHORT wTotalLength
Definition: usb300.h:103
UCHAR bDescriptorType
Definition: usb300.h:102
UCHAR bNumDeviceCaps
Definition: usb300.h:104
union _USB_DEVICE_CAPABILITY_BILLBOARD_DESCRIPTOR::@4031 VconnPower
struct _USB_DEVICE_CAPABILITY_BILLBOARD_DESCRIPTOR::@4032 AlternateMode[1]
union _USB_DEVICE_CAPABILITY_POWER_DELIVERY_DESCRIPTOR::@4028 bmAttributes
union _USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_USB_DESCRIPTOR::@4023 wFunctionalitySupport
union _USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_USB_DESCRIPTOR::@4022 bmAttributes
USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED bmSublinkSpeedAttr[1]
Definition: usb300.h:180
union _USB_DEVICE_CAPABILITY_USB20_EXTENSION_DESCRIPTOR::@4017 bmAttributes
struct _USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR::@4035::@4036 Bulk
struct _USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR::@4035::@4037 Isochronous
union _USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR::@4035 bmAttributes
unsigned char UCHAR
Definition: typedefs.h:53
uint32_t ULONG
Definition: typedefs.h:59
USHORT U1Enable
Definition: usb300.h:84
USHORT AsUshort16
Definition: usb300.h:80
USHORT LtmEnable
Definition: usb300.h:86
USHORT Reserved
Definition: usb300.h:87
USHORT U2Enable
Definition: usb300.h:85
USHORT SelfPowered
Definition: usb300.h:82
USHORT RemoteWakeup
Definition: usb300.h:83
USHORT RemoteWakeupEnabled
Definition: usb300.h:95
USHORT RemoteWakeupCapable
Definition: usb300.h:94
USB_PORT_EXT_STATUS PortExtStatus
Definition: usb300.h:311
USB_PORT_STATUS_AND_CHANGE PortStatusChange
Definition: usb300.h:310
ULONG TxSublinkSpeedID
Definition: usb300.h:300
ULONG RxSublinkSpeedID
Definition: usb300.h:299
union _USB_PORT_EXT_STATUS * PUSB_PORT_EXT_STATUS
struct _USB_DEVICE_CAPABILITY_DESCRIPTOR USB_DEVICE_CAPABILITY_DESCRIPTOR
union _USB_DEVICE_STATUS USB_DEVICE_STATUS
struct _USB_SUPERSPEEDPLUS_ISOCH_ENDPOINT_COMPANION_DESCRIPTOR USB_SUPERSPEEDPLUS_ISOCH_ENDPOINT_COMPANION_DESCRIPTOR
union _USB_INTERFACE_STATUS * PUSB_INTERFACE_STATUS
struct _USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR
struct _USB_DEVICE_CAPABILITY_BILLBOARD_DESCRIPTOR USB_DEVICE_CAPABILITY_BILLBOARD_DESCRIPTOR
struct _USB_DEVICE_CAPABILITY_USB20_EXTENSION_DESCRIPTOR * PUSB_DEVICE_CAPABILITY_USB20_EXTENSION_DESCRIPTOR
struct _USB_30_HUB_DESCRIPTOR * PUSB_30_HUB_DESCRIPTOR
union _USB_DEVICE_STATUS * PUSB_DEVICE_STATUS
struct _USB_DEVICE_CAPABILITY_BILLBOARD_DESCRIPTOR * PUSB_DEVICE_CAPABILITY_BILLBOARD_DESCRIPTOR
struct _USB_BOS_DESCRIPTOR USB_BOS_DESCRIPTOR
struct _USB_DEVICE_CAPABILITY_CONTAINER_ID_DESCRIPTOR * PUSB_DEVICE_CAPABILITY_CONTAINER_ID_DESCRIPTOR
struct _USB_DEVICE_CAPABILITY_SUPERSPEED_USB_DESCRIPTOR * PUSB_DEVICE_CAPABILITY_SUPERSPEED_USB_DESCRIPTOR
struct _USB_DEVICE_CAPABILITY_CONTAINER_ID_DESCRIPTOR USB_DEVICE_CAPABILITY_CONTAINER_ID_DESCRIPTOR
struct _USB_30_HUB_DESCRIPTOR USB_30_HUB_DESCRIPTOR
struct _USB_DEVICE_CAPABILITY_USB20_EXTENSION_DESCRIPTOR USB_DEVICE_CAPABILITY_USB20_EXTENSION_DESCRIPTOR
struct _USB_DEVICE_CAPABILITY_PLATFORM_DESCRIPTOR USB_DEVICE_CAPABILITY_PLATFORM_DESCRIPTOR
struct _USB_DEVICE_CAPABILITY_DESCRIPTOR * PUSB_DEVICE_CAPABILITY_DESCRIPTOR
union _USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED
union _USB_INTERFACE_STATUS USB_INTERFACE_STATUS
struct _USB_DEVICE_CAPABILITY_PLATFORM_DESCRIPTOR * PUSB_DEVICE_CAPABILITY_PLATFORM_DESCRIPTOR
union _USB_PORT_EXT_STATUS_AND_CHANGE USB_PORT_EXT_STATUS_AND_CHANGE
struct _USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_USB_DESCRIPTOR USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_USB_DESCRIPTOR
struct _USB_DEVICE_CAPABILITY_POWER_DELIVERY_DESCRIPTOR * PUSB_DEVICE_CAPABILITY_POWER_DELIVERY_DESCRIPTOR
union _USB_HUB_30_PORT_REMOTE_WAKE_MASK USB_HUB_30_PORT_REMOTE_WAKE_MASK
struct _USB_SUPERSPEEDPLUS_ISOCH_ENDPOINT_COMPANION_DESCRIPTOR * PUSB_SUPERSPEEDPLUS_ISOCH_ENDPOINT_COMPANION_DESCRIPTOR
union _USB_PORT_EXT_STATUS USB_PORT_EXT_STATUS
struct _USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR * PUSB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR
struct _USB_BOS_DESCRIPTOR * PUSB_BOS_DESCRIPTOR
struct _USB_DEVICE_CAPABILITY_SUPERSPEED_USB_DESCRIPTOR USB_DEVICE_CAPABILITY_SUPERSPEED_USB_DESCRIPTOR
union _USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED * PUSB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED
union _USB_PORT_EXT_STATUS_AND_CHANGE * PUSB_PORT_EXT_STATUS_AND_CHANGE
struct _USB_DEVICE_CAPABILITY_POWER_DELIVERY_DESCRIPTOR USB_DEVICE_CAPABILITY_POWER_DELIVERY_DESCRIPTOR
union _USB_HUB_30_PORT_REMOTE_WAKE_MASK * PUSB_HUB_30_PORT_REMOTE_WAKE_MASK
struct _USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_USB_DESCRIPTOR * PUSB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_USB_DESCRIPTOR
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_ PCUNICODE_STRING ContainerID
Definition: wdfpdo.h:402