zigwin32/win32/devices/usb.zig

2319 lines
84 KiB
Zig

//! NOTE: this file is autogenerated, DO NOT MODIFY
//--------------------------------------------------------------------------------
// Section: Constants (548)
//--------------------------------------------------------------------------------
pub const SHORT_PACKET_TERMINATE = @as(u32, 1);
pub const AUTO_CLEAR_STALL = @as(u32, 2);
pub const PIPE_TRANSFER_TIMEOUT = @as(u32, 3);
pub const IGNORE_SHORT_PACKETS = @as(u32, 4);
pub const ALLOW_PARTIAL_READS = @as(u32, 5);
pub const AUTO_FLUSH = @as(u32, 6);
pub const RAW_IO = @as(u32, 7);
pub const MAXIMUM_TRANSFER_SIZE = @as(u32, 8);
pub const RESET_PIPE_ON_RESUME = @as(u32, 9);
pub const AUTO_SUSPEND = @as(u32, 129);
pub const SUSPEND_DELAY = @as(u32, 131);
pub const DEVICE_SPEED = @as(u32, 1);
pub const LowSpeed = @as(u32, 1);
pub const FullSpeed = @as(u32, 2);
pub const HighSpeed = @as(u32, 3);
pub const IOCTL_GENERICUSBFN_TRANSFER_IN = @as(u32, 2277389);
pub const IOCTL_GENERICUSBFN_TRANSFER_IN_APPEND_ZERO_PKT = @as(u32, 2277393);
pub const IOCTL_GENERICUSBFN_TRANSFER_OUT = @as(u32, 2277398);
pub const IOCTL_GENERICUSBFN_CONTROL_STATUS_HANDSHAKE_IN = @as(u32, 2277400);
pub const IOCTL_GENERICUSBFN_CONTROL_STATUS_HANDSHAKE_OUT = @as(u32, 2277404);
pub const IOCTL_GENERICUSBFN_GET_CLASS_INFO = @as(u32, 2277410);
pub const IOCTL_GENERICUSBFN_GET_PIPE_STATE = @as(u32, 2277414);
pub const IOCTL_GENERICUSBFN_SET_PIPE_STATE = @as(u32, 2277417);
pub const IOCTL_GENERICUSBFN_ACTIVATE_USB_BUS = @as(u32, 2277420);
pub const IOCTL_GENERICUSBFN_DEACTIVATE_USB_BUS = @as(u32, 2277424);
pub const IOCTL_GENERICUSBFN_BUS_EVENT_NOTIFICATION = @as(u32, 2277430);
pub const IOCTL_GENERICUSBFN_GET_CLASS_INFO_EX = @as(u32, 2277434);
pub const IOCTL_GENERICUSBFN_GET_INTERFACE_DESCRIPTOR_SET = @as(u32, 2277438);
pub const IOCTL_GENERICUSBFN_REGISTER_USB_STRING = @as(u32, 2277441);
pub const USBUSER_VERSION = @as(u32, 4);
pub const USBUSER_GET_CONTROLLER_INFO_0 = @as(u32, 1);
pub const USBUSER_GET_CONTROLLER_DRIVER_KEY = @as(u32, 2);
pub const USBUSER_PASS_THRU = @as(u32, 3);
pub const USBUSER_GET_POWER_STATE_MAP = @as(u32, 4);
pub const USBUSER_GET_BANDWIDTH_INFORMATION = @as(u32, 5);
pub const USBUSER_GET_BUS_STATISTICS_0 = @as(u32, 6);
pub const USBUSER_GET_ROOTHUB_SYMBOLIC_NAME = @as(u32, 7);
pub const USBUSER_GET_USB_DRIVER_VERSION = @as(u32, 8);
pub const USBUSER_GET_USB2_HW_VERSION = @as(u32, 9);
pub const USBUSER_USB_REFRESH_HCT_REG = @as(u32, 10);
pub const USBUSER_OP_SEND_ONE_PACKET = @as(u32, 268435457);
pub const USBUSER_OP_RAW_RESET_PORT = @as(u32, 536870913);
pub const USBUSER_OP_OPEN_RAW_DEVICE = @as(u32, 536870914);
pub const USBUSER_OP_CLOSE_RAW_DEVICE = @as(u32, 536870915);
pub const USBUSER_OP_SEND_RAW_COMMAND = @as(u32, 536870916);
pub const USBUSER_SET_ROOTPORT_FEATURE = @as(u32, 536870917);
pub const USBUSER_CLEAR_ROOTPORT_FEATURE = @as(u32, 536870918);
pub const USBUSER_GET_ROOTPORT_STATUS = @as(u32, 536870919);
pub const USBUSER_INVALID_REQUEST = @as(u32, 4294967280);
pub const USBUSER_OP_MASK_DEVONLY_API = @as(u32, 268435456);
pub const USBUSER_OP_MASK_HCTEST_API = @as(u32, 536870912);
pub const USB_PACKETFLAG_LOW_SPEED = @as(u32, 1);
pub const USB_PACKETFLAG_FULL_SPEED = @as(u32, 2);
pub const USB_PACKETFLAG_HIGH_SPEED = @as(u32, 4);
pub const USB_PACKETFLAG_ASYNC_IN = @as(u32, 8);
pub const USB_PACKETFLAG_ASYNC_OUT = @as(u32, 16);
pub const USB_PACKETFLAG_ISO_IN = @as(u32, 32);
pub const USB_PACKETFLAG_ISO_OUT = @as(u32, 64);
pub const USB_PACKETFLAG_SETUP = @as(u32, 128);
pub const USB_PACKETFLAG_TOGGLE0 = @as(u32, 256);
pub const USB_PACKETFLAG_TOGGLE1 = @as(u32, 512);
pub const USB_HC_FEATURE_FLAG_PORT_POWER_SWITCHING = @as(u32, 1);
pub const USB_HC_FEATURE_FLAG_SEL_SUSPEND = @as(u32, 2);
pub const USB_HC_FEATURE_LEGACY_BIOS = @as(u32, 4);
pub const USB_HC_FEATURE_TIME_SYNC_API = @as(u32, 8);
pub const USB_SUBMIT_URB = @as(u32, 0);
pub const USB_RESET_PORT = @as(u32, 1);
pub const USB_GET_ROOTHUB_PDO = @as(u32, 3);
pub const USB_GET_PORT_STATUS = @as(u32, 4);
pub const USB_ENABLE_PORT = @as(u32, 5);
pub const USB_GET_HUB_COUNT = @as(u32, 6);
pub const USB_CYCLE_PORT = @as(u32, 7);
pub const USB_GET_HUB_NAME = @as(u32, 8);
pub const USB_IDLE_NOTIFICATION = @as(u32, 9);
pub const USB_RECORD_FAILURE = @as(u32, 10);
pub const USB_GET_BUS_INFO = @as(u32, 264);
pub const USB_GET_CONTROLLER_NAME = @as(u32, 265);
pub const USB_GET_BUSGUID_INFO = @as(u32, 266);
pub const USB_GET_PARENT_HUB_INFO = @as(u32, 267);
pub const USB_GET_DEVICE_HANDLE = @as(u32, 268);
pub const USB_GET_DEVICE_HANDLE_EX = @as(u32, 269);
pub const USB_GET_TT_DEVICE_HANDLE = @as(u32, 270);
pub const USB_GET_TOPOLOGY_ADDRESS = @as(u32, 271);
pub const USB_IDLE_NOTIFICATION_EX = @as(u32, 272);
pub const USB_REQ_GLOBAL_SUSPEND = @as(u32, 273);
pub const USB_REQ_GLOBAL_RESUME = @as(u32, 274);
pub const USB_GET_HUB_CONFIG_INFO = @as(u32, 275);
pub const USB_FAIL_GET_STATUS = @as(u32, 280);
pub const USB_REGISTER_COMPOSITE_DEVICE = @as(u32, 0);
pub const USB_UNREGISTER_COMPOSITE_DEVICE = @as(u32, 1);
pub const USB_REQUEST_REMOTE_WAKE_NOTIFICATION = @as(u32, 2);
pub const HCD_GET_STATS_1 = @as(u32, 255);
pub const HCD_DIAGNOSTIC_MODE_ON = @as(u32, 256);
pub const HCD_DIAGNOSTIC_MODE_OFF = @as(u32, 257);
pub const HCD_GET_ROOT_HUB_NAME = @as(u32, 258);
pub const HCD_GET_DRIVERKEY_NAME = @as(u32, 265);
pub const HCD_GET_STATS_2 = @as(u32, 266);
pub const HCD_DISABLE_PORT = @as(u32, 268);
pub const HCD_ENABLE_PORT = @as(u32, 269);
pub const HCD_USER_REQUEST = @as(u32, 270);
pub const HCD_TRACE_READ_REQUEST = @as(u32, 275);
pub const USB_GET_NODE_INFORMATION = @as(u32, 258);
pub const USB_GET_NODE_CONNECTION_INFORMATION = @as(u32, 259);
pub const USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION = @as(u32, 260);
pub const USB_GET_NODE_CONNECTION_NAME = @as(u32, 261);
pub const USB_DIAG_IGNORE_HUBS_ON = @as(u32, 262);
pub const USB_DIAG_IGNORE_HUBS_OFF = @as(u32, 263);
pub const USB_GET_NODE_CONNECTION_DRIVERKEY_NAME = @as(u32, 264);
pub const USB_GET_HUB_CAPABILITIES = @as(u32, 271);
pub const USB_GET_NODE_CONNECTION_ATTRIBUTES = @as(u32, 272);
pub const USB_HUB_CYCLE_PORT = @as(u32, 273);
pub const USB_GET_NODE_CONNECTION_INFORMATION_EX = @as(u32, 274);
pub const USB_RESET_HUB = @as(u32, 275);
pub const USB_GET_HUB_CAPABILITIES_EX = @as(u32, 276);
pub const USB_GET_HUB_INFORMATION_EX = @as(u32, 277);
pub const USB_GET_PORT_CONNECTOR_PROPERTIES = @as(u32, 278);
pub const USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 = @as(u32, 279);
pub const USB_GET_TRANSPORT_CHARACTERISTICS = @as(u32, 281);
pub const USB_REGISTER_FOR_TRANSPORT_CHARACTERISTICS_CHANGE = @as(u32, 282);
pub const USB_NOTIFY_ON_TRANSPORT_CHARACTERISTICS_CHANGE = @as(u32, 283);
pub const USB_UNREGISTER_FOR_TRANSPORT_CHARACTERISTICS_CHANGE = @as(u32, 284);
pub const USB_START_TRACKING_FOR_TIME_SYNC = @as(u32, 285);
pub const USB_GET_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC = @as(u32, 286);
pub const USB_STOP_TRACKING_FOR_TIME_SYNC = @as(u32, 287);
pub const USB_GET_DEVICE_CHARACTERISTICS = @as(u32, 288);
pub const GUID_DEVINTERFACE_USB_HUB = Guid.initString("f18a0e88-c30c-11d0-8815-00a0c906bed8");
pub const GUID_DEVINTERFACE_USB_BILLBOARD = Guid.initString("5e9adaef-f879-473f-b807-4e5ea77d1b1c");
pub const GUID_DEVINTERFACE_USB_DEVICE = Guid.initString("a5dcbf10-6530-11d2-901f-00c04fb951ed");
pub const GUID_DEVINTERFACE_USB_HOST_CONTROLLER = Guid.initString("3abf6f2d-71c4-462a-8a92-1e6861e6af27");
pub const GUID_USB_WMI_STD_DATA = Guid.initString("4e623b20-cb14-11d1-b331-00a0c959bbd2");
pub const GUID_USB_WMI_STD_NOTIFICATION = Guid.initString("4e623b20-cb14-11d1-b331-00a0c959bbd2");
pub const GUID_USB_WMI_DEVICE_PERF_INFO = Guid.initString("66c1aa3c-499f-49a0-a9a5-61e2359f6407");
pub const GUID_USB_WMI_NODE_INFO = Guid.initString("9c179357-dc7a-4f41-b66b-323b9ddcb5b1");
pub const GUID_USB_WMI_TRACING = Guid.initString("3a61881b-b4e6-4bf9-ae0f-3cd8f394e52f");
pub const GUID_USB_TRANSFER_TRACING = Guid.initString("681eb8aa-403d-452c-9f8a-f0616fac9540");
pub const GUID_USB_PERFORMANCE_TRACING = Guid.initString("d5de77a6-6ae9-425c-b1e2-f5615fd348a9");
pub const GUID_USB_WMI_SURPRISE_REMOVAL_NOTIFICATION = Guid.initString("9bbbf831-a2f2-43b4-96d1-86944b5914b3");
pub const FILE_DEVICE_USB = @as(u32, 34);
pub const BMREQUEST_HOST_TO_DEVICE = @as(u32, 0);
pub const BMREQUEST_DEVICE_TO_HOST = @as(u32, 1);
pub const BMREQUEST_STANDARD = @as(u32, 0);
pub const BMREQUEST_CLASS = @as(u32, 1);
pub const BMREQUEST_VENDOR = @as(u32, 2);
pub const BMREQUEST_TO_DEVICE = @as(u32, 0);
pub const BMREQUEST_TO_INTERFACE = @as(u32, 1);
pub const BMREQUEST_TO_ENDPOINT = @as(u32, 2);
pub const BMREQUEST_TO_OTHER = @as(u32, 3);
pub const USB_REQUEST_GET_STATUS = @as(u32, 0);
pub const USB_REQUEST_CLEAR_FEATURE = @as(u32, 1);
pub const USB_REQUEST_SET_FEATURE = @as(u32, 3);
pub const USB_REQUEST_SET_ADDRESS = @as(u32, 5);
pub const USB_REQUEST_GET_DESCRIPTOR = @as(u32, 6);
pub const USB_REQUEST_SET_DESCRIPTOR = @as(u32, 7);
pub const USB_REQUEST_GET_CONFIGURATION = @as(u32, 8);
pub const USB_REQUEST_SET_CONFIGURATION = @as(u32, 9);
pub const USB_REQUEST_GET_INTERFACE = @as(u32, 10);
pub const USB_REQUEST_SET_INTERFACE = @as(u32, 11);
pub const USB_REQUEST_SYNC_FRAME = @as(u32, 12);
pub const USB_REQUEST_GET_FIRMWARE_STATUS = @as(u32, 26);
pub const USB_REQUEST_SET_FIRMWARE_STATUS = @as(u32, 27);
pub const USB_GET_FIRMWARE_ALLOWED_OR_DISALLOWED_STATE = @as(u32, 0);
pub const USB_GET_FIRMWARE_HASH = @as(u32, 1);
pub const USB_DEVICE_FIRMWARE_HASH_LENGTH = @as(u32, 32);
pub const USB_DISALLOW_FIRMWARE_UPDATE = @as(u32, 0);
pub const USB_ALLOW_FIRMWARE_UPDATE = @as(u32, 1);
pub const USB_REQUEST_SET_SEL = @as(u32, 48);
pub const USB_REQUEST_ISOCH_DELAY = @as(u32, 49);
pub const USB_DEVICE_DESCRIPTOR_TYPE = @as(u32, 1);
pub const USB_CONFIGURATION_DESCRIPTOR_TYPE = @as(u32, 2);
pub const USB_STRING_DESCRIPTOR_TYPE = @as(u32, 3);
pub const USB_INTERFACE_DESCRIPTOR_TYPE = @as(u32, 4);
pub const USB_ENDPOINT_DESCRIPTOR_TYPE = @as(u32, 5);
pub const USB_DEVICE_QUALIFIER_DESCRIPTOR_TYPE = @as(u32, 6);
pub const USB_OTHER_SPEED_CONFIGURATION_DESCRIPTOR_TYPE = @as(u32, 7);
pub const USB_INTERFACE_POWER_DESCRIPTOR_TYPE = @as(u32, 8);
pub const USB_OTG_DESCRIPTOR_TYPE = @as(u32, 9);
pub const USB_DEBUG_DESCRIPTOR_TYPE = @as(u32, 10);
pub const USB_INTERFACE_ASSOCIATION_DESCRIPTOR_TYPE = @as(u32, 11);
pub const USB_BOS_DESCRIPTOR_TYPE = @as(u32, 15);
pub const USB_DEVICE_CAPABILITY_DESCRIPTOR_TYPE = @as(u32, 16);
pub const USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR_TYPE = @as(u32, 48);
pub const USB_SUPERSPEEDPLUS_ISOCH_ENDPOINT_COMPANION_DESCRIPTOR_TYPE = @as(u32, 49);
pub const USB_RESERVED_DESCRIPTOR_TYPE = @as(u32, 6);
pub const USB_CONFIG_POWER_DESCRIPTOR_TYPE = @as(u32, 7);
pub const USB_FEATURE_ENDPOINT_STALL = @as(u32, 0);
pub const USB_FEATURE_REMOTE_WAKEUP = @as(u32, 1);
pub const USB_FEATURE_TEST_MODE = @as(u32, 2);
pub const USB_FEATURE_FUNCTION_SUSPEND = @as(u32, 0);
pub const USB_FEATURE_U1_ENABLE = @as(u32, 48);
pub const USB_FEATURE_U2_ENABLE = @as(u32, 49);
pub const USB_FEATURE_LTM_ENABLE = @as(u32, 50);
pub const USB_FEATURE_LDM_ENABLE = @as(u32, 53);
pub const USB_FEATURE_BATTERY_WAKE_MASK = @as(u32, 40);
pub const USB_FEATURE_OS_IS_PD_AWARE = @as(u32, 41);
pub const USB_FEATURE_POLICY_MODE = @as(u32, 42);
pub const USB_FEATURE_CHARGING_POLICY = @as(u32, 54);
pub const USB_CHARGING_POLICY_DEFAULT = @as(u32, 0);
pub const USB_CHARGING_POLICY_ICCHPF = @as(u32, 1);
pub const USB_CHARGING_POLICY_ICCLPF = @as(u32, 2);
pub const USB_CHARGING_POLICY_NO_POWER = @as(u32, 3);
pub const USB_STATUS_PORT_STATUS = @as(u32, 0);
pub const USB_STATUS_PD_STATUS = @as(u32, 1);
pub const USB_STATUS_EXT_PORT_STATUS = @as(u32, 2);
pub const USB_GETSTATUS_SELF_POWERED = @as(u32, 1);
pub const USB_GETSTATUS_REMOTE_WAKEUP_ENABLED = @as(u32, 2);
pub const USB_GETSTATUS_U1_ENABLE = @as(u32, 4);
pub const USB_GETSTATUS_U2_ENABLE = @as(u32, 8);
pub const USB_GETSTATUS_LTM_ENABLE = @as(u32, 16);
pub const USB_DEVICE_CLASS_RESERVED = @as(u32, 0);
pub const USB_DEVICE_CLASS_AUDIO = @as(u32, 1);
pub const USB_DEVICE_CLASS_COMMUNICATIONS = @as(u32, 2);
pub const USB_DEVICE_CLASS_HUMAN_INTERFACE = @as(u32, 3);
pub const USB_DEVICE_CLASS_MONITOR = @as(u32, 4);
pub const USB_DEVICE_CLASS_PHYSICAL_INTERFACE = @as(u32, 5);
pub const USB_DEVICE_CLASS_POWER = @as(u32, 6);
pub const USB_DEVICE_CLASS_IMAGE = @as(u32, 6);
pub const USB_DEVICE_CLASS_PRINTER = @as(u32, 7);
pub const USB_DEVICE_CLASS_STORAGE = @as(u32, 8);
pub const USB_DEVICE_CLASS_HUB = @as(u32, 9);
pub const USB_DEVICE_CLASS_CDC_DATA = @as(u32, 10);
pub const USB_DEVICE_CLASS_SMART_CARD = @as(u32, 11);
pub const USB_DEVICE_CLASS_CONTENT_SECURITY = @as(u32, 13);
pub const USB_DEVICE_CLASS_VIDEO = @as(u32, 14);
pub const USB_DEVICE_CLASS_PERSONAL_HEALTHCARE = @as(u32, 15);
pub const USB_DEVICE_CLASS_AUDIO_VIDEO = @as(u32, 16);
pub const USB_DEVICE_CLASS_BILLBOARD = @as(u32, 17);
pub const USB_DEVICE_CLASS_DIAGNOSTIC_DEVICE = @as(u32, 220);
pub const USB_DEVICE_CLASS_WIRELESS_CONTROLLER = @as(u32, 224);
pub const USB_DEVICE_CLASS_MISCELLANEOUS = @as(u32, 239);
pub const USB_DEVICE_CLASS_APPLICATION_SPECIFIC = @as(u32, 254);
pub const USB_DEVICE_CLASS_VENDOR_SPECIFIC = @as(u32, 255);
pub const USB_DEVICE_CAPABILITY_WIRELESS_USB = @as(u32, 1);
pub const USB_DEVICE_CAPABILITY_USB20_EXTENSION = @as(u32, 2);
pub const USB_DEVICE_CAPABILITY_SUPERSPEED_USB = @as(u32, 3);
pub const USB_DEVICE_CAPABILITY_CONTAINER_ID = @as(u32, 4);
pub const USB_DEVICE_CAPABILITY_PLATFORM = @as(u32, 5);
pub const USB_DEVICE_CAPABILITY_POWER_DELIVERY = @as(u32, 6);
pub const USB_DEVICE_CAPABILITY_BATTERY_INFO = @as(u32, 7);
pub const USB_DEVICE_CAPABILITY_PD_CONSUMER_PORT = @as(u32, 8);
pub const USB_DEVICE_CAPABILITY_PD_PROVIDER_PORT = @as(u32, 9);
pub const USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_USB = @as(u32, 10);
pub const USB_DEVICE_CAPABILITY_PRECISION_TIME_MEASUREMENT = @as(u32, 11);
pub const USB_DEVICE_CAPABILITY_BILLBOARD = @as(u32, 13);
pub const USB_DEVICE_CAPABILITY_FIRMWARE_STATUS = @as(u32, 17);
pub const USB_DEVICE_CAPABILITY_USB20_EXTENSION_BMATTRIBUTES_RESERVED_MASK = @as(u32, 4294901985);
pub const USB_DEVICE_CAPABILITY_SUPERSPEED_BMATTRIBUTES_RESERVED_MASK = @as(u32, 253);
pub const USB_DEVICE_CAPABILITY_SUPERSPEED_BMATTRIBUTES_LTM_CAPABLE = @as(u32, 2);
pub const USB_DEVICE_CAPABILITY_SUPERSPEED_SPEEDS_SUPPORTED_RESERVED_MASK = @as(u32, 65520);
pub const USB_DEVICE_CAPABILITY_SUPERSPEED_SPEEDS_SUPPORTED_LOW = @as(u32, 1);
pub const USB_DEVICE_CAPABILITY_SUPERSPEED_SPEEDS_SUPPORTED_FULL = @as(u32, 2);
pub const USB_DEVICE_CAPABILITY_SUPERSPEED_SPEEDS_SUPPORTED_HIGH = @as(u32, 4);
pub const USB_DEVICE_CAPABILITY_SUPERSPEED_SPEEDS_SUPPORTED_SUPER = @as(u32, 8);
pub const USB_DEVICE_CAPABILITY_SUPERSPEED_U1_DEVICE_EXIT_MAX_VALUE = @as(u32, 10);
pub const USB_DEVICE_CAPABILITY_SUPERSPEED_U2_DEVICE_EXIT_MAX_VALUE = @as(u32, 2047);
pub const USB_DEVICE_CAPABILITY_MAX_U1_LATENCY = @as(u32, 10);
pub const USB_DEVICE_CAPABILITY_MAX_U2_LATENCY = @as(u32, 2047);
pub const USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_LSE_BPS = @as(u32, 0);
pub const USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_LSE_KBPS = @as(u32, 1);
pub const USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_LSE_MBPS = @as(u32, 2);
pub const USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_LSE_GBPS = @as(u32, 3);
pub const USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_MODE_SYMMETRIC = @as(u32, 0);
pub const USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_MODE_ASYMMETRIC = @as(u32, 1);
pub const USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_DIR_RX = @as(u32, 0);
pub const USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_DIR_TX = @as(u32, 1);
pub const USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_PROTOCOL_SS = @as(u32, 0);
pub const USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_PROTOCOL_SSP = @as(u32, 1);
pub const GUID_USB_MSOS20_PLATFORM_CAPABILITY_ID = Guid.initString("d8dd60df-4589-4cc7-9cd2-659d9e648a9f");
pub const USB_CONFIG_POWERED_MASK = @as(u32, 192);
pub const USB_CONFIG_BUS_POWERED = @as(u32, 128);
pub const USB_CONFIG_SELF_POWERED = @as(u32, 64);
pub const USB_CONFIG_REMOTE_WAKEUP = @as(u32, 32);
pub const USB_CONFIG_RESERVED = @as(u32, 31);
pub const USB_ENDPOINT_DIRECTION_MASK = @as(u32, 128);
pub const USB_ENDPOINT_ADDRESS_MASK = @as(u32, 15);
pub const USB_ENDPOINT_TYPE_MASK = @as(u32, 3);
pub const USB_ENDPOINT_TYPE_CONTROL = @as(u32, 0);
pub const USB_ENDPOINT_TYPE_ISOCHRONOUS = @as(u32, 1);
pub const USB_ENDPOINT_TYPE_BULK = @as(u32, 2);
pub const USB_ENDPOINT_TYPE_INTERRUPT = @as(u32, 3);
pub const USB_ENDPOINT_TYPE_BULK_RESERVED_MASK = @as(u32, 252);
pub const USB_ENDPOINT_TYPE_CONTROL_RESERVED_MASK = @as(u32, 252);
pub const USB_20_ENDPOINT_TYPE_INTERRUPT_RESERVED_MASK = @as(u32, 252);
pub const USB_30_ENDPOINT_TYPE_INTERRUPT_RESERVED_MASK = @as(u32, 204);
pub const USB_ENDPOINT_TYPE_ISOCHRONOUS_RESERVED_MASK = @as(u32, 192);
pub const USB_30_ENDPOINT_TYPE_INTERRUPT_USAGE_MASK = @as(u32, 48);
pub const USB_30_ENDPOINT_TYPE_INTERRUPT_USAGE_PERIODIC = @as(u32, 0);
pub const USB_30_ENDPOINT_TYPE_INTERRUPT_USAGE_NOTIFICATION = @as(u32, 16);
pub const USB_30_ENDPOINT_TYPE_INTERRUPT_USAGE_RESERVED10 = @as(u32, 32);
pub const USB_30_ENDPOINT_TYPE_INTERRUPT_USAGE_RESERVED11 = @as(u32, 48);
pub const USB_ENDPOINT_TYPE_ISOCHRONOUS_SYNCHRONIZATION_MASK = @as(u32, 12);
pub const USB_ENDPOINT_TYPE_ISOCHRONOUS_SYNCHRONIZATION_NO_SYNCHRONIZATION = @as(u32, 0);
pub const USB_ENDPOINT_TYPE_ISOCHRONOUS_SYNCHRONIZATION_ASYNCHRONOUS = @as(u32, 4);
pub const USB_ENDPOINT_TYPE_ISOCHRONOUS_SYNCHRONIZATION_ADAPTIVE = @as(u32, 8);
pub const USB_ENDPOINT_TYPE_ISOCHRONOUS_SYNCHRONIZATION_SYNCHRONOUS = @as(u32, 12);
pub const USB_ENDPOINT_TYPE_ISOCHRONOUS_USAGE_MASK = @as(u32, 48);
pub const USB_ENDPOINT_TYPE_ISOCHRONOUS_USAGE_DATA_ENDOINT = @as(u32, 0);
pub const USB_ENDPOINT_TYPE_ISOCHRONOUS_USAGE_FEEDBACK_ENDPOINT = @as(u32, 16);
pub const USB_ENDPOINT_TYPE_ISOCHRONOUS_USAGE_IMPLICIT_FEEDBACK_DATA_ENDPOINT = @as(u32, 32);
pub const USB_ENDPOINT_TYPE_ISOCHRONOUS_USAGE_RESERVED = @as(u32, 48);
pub const USB_ENDPOINT_SUPERSPEED_BULK_MAX_PACKET_SIZE = @as(u32, 1024);
pub const USB_ENDPOINT_SUPERSPEED_CONTROL_MAX_PACKET_SIZE = @as(u32, 512);
pub const USB_ENDPOINT_SUPERSPEED_ISO_MAX_PACKET_SIZE = @as(u32, 1024);
pub const USB_ENDPOINT_SUPERSPEED_INTERRUPT_MAX_PACKET_SIZE = @as(u32, 1024);
pub const MAXIMUM_USB_STRING_LENGTH = @as(u32, 255);
pub const USB_SUPERSPEED_ISOCHRONOUS_MAX_MULTIPLIER = @as(u32, 2);
pub const USB_SUPERSPEEDPLUS_ISOCHRONOUS_MIN_BYTESPERINTERVAL = @as(u32, 49153);
pub const USB_SUPERSPEEDPLUS_ISOCHRONOUS_MAX_BYTESPERINTERVAL = @as(u32, 16777215);
pub const USB_20_HUB_DESCRIPTOR_TYPE = @as(u32, 41);
pub const USB_30_HUB_DESCRIPTOR_TYPE = @as(u32, 42);
pub const USB_REQUEST_GET_STATE = @as(u32, 2);
pub const USB_REQUEST_CLEAR_TT_BUFFER = @as(u32, 8);
pub const USB_REQUEST_RESET_TT = @as(u32, 9);
pub const USB_REQUEST_GET_TT_STATE = @as(u32, 10);
pub const USB_REQUEST_STOP_TT = @as(u32, 11);
pub const USB_REQUEST_SET_HUB_DEPTH = @as(u32, 12);
pub const USB_REQUEST_GET_PORT_ERR_COUNT = @as(u32, 13);
pub const USB_PORT_STATUS_CONNECT = @as(u32, 1);
pub const USB_PORT_STATUS_ENABLE = @as(u32, 2);
pub const USB_PORT_STATUS_SUSPEND = @as(u32, 4);
pub const USB_PORT_STATUS_OVER_CURRENT = @as(u32, 8);
pub const USB_PORT_STATUS_RESET = @as(u32, 16);
pub const USB_PORT_STATUS_POWER = @as(u32, 256);
pub const USB_PORT_STATUS_LOW_SPEED = @as(u32, 512);
pub const USB_PORT_STATUS_HIGH_SPEED = @as(u32, 1024);
pub const PORT_LINK_STATE_U0 = @as(u32, 0);
pub const PORT_LINK_STATE_U1 = @as(u32, 1);
pub const PORT_LINK_STATE_U2 = @as(u32, 2);
pub const PORT_LINK_STATE_U3 = @as(u32, 3);
pub const PORT_LINK_STATE_DISABLED = @as(u32, 4);
pub const PORT_LINK_STATE_RX_DETECT = @as(u32, 5);
pub const PORT_LINK_STATE_INACTIVE = @as(u32, 6);
pub const PORT_LINK_STATE_POLLING = @as(u32, 7);
pub const PORT_LINK_STATE_RECOVERY = @as(u32, 8);
pub const PORT_LINK_STATE_HOT_RESET = @as(u32, 9);
pub const PORT_LINK_STATE_COMPLIANCE_MODE = @as(u32, 10);
pub const PORT_LINK_STATE_LOOPBACK = @as(u32, 11);
pub const PORT_LINK_STATE_TEST_MODE = @as(u32, 11);
pub const USB_FEATURE_INTERFACE_POWER_D0 = @as(u32, 2);
pub const USB_FEATURE_INTERFACE_POWER_D1 = @as(u32, 3);
pub const USB_FEATURE_INTERFACE_POWER_D2 = @as(u32, 4);
pub const USB_FEATURE_INTERFACE_POWER_D3 = @as(u32, 5);
pub const USB_SUPPORT_D0_COMMAND = @as(u32, 1);
pub const USB_SUPPORT_D1_COMMAND = @as(u32, 2);
pub const USB_SUPPORT_D2_COMMAND = @as(u32, 4);
pub const USB_SUPPORT_D3_COMMAND = @as(u32, 8);
pub const USB_SUPPORT_D1_WAKEUP = @as(u32, 16);
pub const USB_SUPPORT_D2_WAKEUP = @as(u32, 32);
pub const USBDI_VERSION = @as(u32, 1536);
pub const USB_PORTATTR_NO_CONNECTOR = @as(u32, 1);
pub const USB_PORTATTR_SHARED_USB2 = @as(u32, 2);
pub const USB_PORTATTR_MINI_CONNECTOR = @as(u32, 4);
pub const USB_PORTATTR_OEM_CONNECTOR = @as(u32, 8);
pub const USB_PORTATTR_OWNED_BY_CC = @as(u32, 16777216);
pub const USB_PORTATTR_NO_OVERCURRENT_UI = @as(u32, 33554432);
pub const USB_DEFAULT_DEVICE_ADDRESS = @as(u32, 0);
pub const USB_DEFAULT_ENDPOINT_ADDRESS = @as(u32, 0);
pub const USB_DEFAULT_MAX_PACKET = @as(u32, 64);
pub const URB_FUNCTION_SELECT_CONFIGURATION = @as(u32, 0);
pub const URB_FUNCTION_SELECT_INTERFACE = @as(u32, 1);
pub const URB_FUNCTION_ABORT_PIPE = @as(u32, 2);
pub const URB_FUNCTION_TAKE_FRAME_LENGTH_CONTROL = @as(u32, 3);
pub const URB_FUNCTION_RELEASE_FRAME_LENGTH_CONTROL = @as(u32, 4);
pub const URB_FUNCTION_GET_FRAME_LENGTH = @as(u32, 5);
pub const URB_FUNCTION_SET_FRAME_LENGTH = @as(u32, 6);
pub const URB_FUNCTION_GET_CURRENT_FRAME_NUMBER = @as(u32, 7);
pub const URB_FUNCTION_CONTROL_TRANSFER = @as(u32, 8);
pub const URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER = @as(u32, 9);
pub const URB_FUNCTION_ISOCH_TRANSFER = @as(u32, 10);
pub const URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE = @as(u32, 11);
pub const URB_FUNCTION_SET_DESCRIPTOR_TO_DEVICE = @as(u32, 12);
pub const URB_FUNCTION_SET_FEATURE_TO_DEVICE = @as(u32, 13);
pub const URB_FUNCTION_SET_FEATURE_TO_INTERFACE = @as(u32, 14);
pub const URB_FUNCTION_SET_FEATURE_TO_ENDPOINT = @as(u32, 15);
pub const URB_FUNCTION_CLEAR_FEATURE_TO_DEVICE = @as(u32, 16);
pub const URB_FUNCTION_CLEAR_FEATURE_TO_INTERFACE = @as(u32, 17);
pub const URB_FUNCTION_CLEAR_FEATURE_TO_ENDPOINT = @as(u32, 18);
pub const URB_FUNCTION_GET_STATUS_FROM_DEVICE = @as(u32, 19);
pub const URB_FUNCTION_GET_STATUS_FROM_INTERFACE = @as(u32, 20);
pub const URB_FUNCTION_GET_STATUS_FROM_ENDPOINT = @as(u32, 21);
pub const URB_FUNCTION_RESERVED_0X0016 = @as(u32, 22);
pub const URB_FUNCTION_VENDOR_DEVICE = @as(u32, 23);
pub const URB_FUNCTION_VENDOR_INTERFACE = @as(u32, 24);
pub const URB_FUNCTION_VENDOR_ENDPOINT = @as(u32, 25);
pub const URB_FUNCTION_CLASS_DEVICE = @as(u32, 26);
pub const URB_FUNCTION_CLASS_INTERFACE = @as(u32, 27);
pub const URB_FUNCTION_CLASS_ENDPOINT = @as(u32, 28);
pub const URB_FUNCTION_RESERVE_0X001D = @as(u32, 29);
pub const URB_FUNCTION_SYNC_RESET_PIPE_AND_CLEAR_STALL = @as(u32, 30);
pub const URB_FUNCTION_CLASS_OTHER = @as(u32, 31);
pub const URB_FUNCTION_VENDOR_OTHER = @as(u32, 32);
pub const URB_FUNCTION_GET_STATUS_FROM_OTHER = @as(u32, 33);
pub const URB_FUNCTION_CLEAR_FEATURE_TO_OTHER = @as(u32, 34);
pub const URB_FUNCTION_SET_FEATURE_TO_OTHER = @as(u32, 35);
pub const URB_FUNCTION_GET_DESCRIPTOR_FROM_ENDPOINT = @as(u32, 36);
pub const URB_FUNCTION_SET_DESCRIPTOR_TO_ENDPOINT = @as(u32, 37);
pub const URB_FUNCTION_GET_CONFIGURATION = @as(u32, 38);
pub const URB_FUNCTION_GET_INTERFACE = @as(u32, 39);
pub const URB_FUNCTION_GET_DESCRIPTOR_FROM_INTERFACE = @as(u32, 40);
pub const URB_FUNCTION_SET_DESCRIPTOR_TO_INTERFACE = @as(u32, 41);
pub const URB_FUNCTION_RESERVE_0X002B = @as(u32, 43);
pub const URB_FUNCTION_RESERVE_0X002C = @as(u32, 44);
pub const URB_FUNCTION_RESERVE_0X002D = @as(u32, 45);
pub const URB_FUNCTION_RESERVE_0X002E = @as(u32, 46);
pub const URB_FUNCTION_RESERVE_0X002F = @as(u32, 47);
pub const URB_FUNCTION_GET_MS_FEATURE_DESCRIPTOR = @as(u32, 42);
pub const URB_FUNCTION_SYNC_RESET_PIPE = @as(u32, 48);
pub const URB_FUNCTION_SYNC_CLEAR_STALL = @as(u32, 49);
pub const URB_FUNCTION_CONTROL_TRANSFER_EX = @as(u32, 50);
pub const URB_FUNCTION_RESERVE_0X0033 = @as(u32, 51);
pub const URB_FUNCTION_RESERVE_0X0034 = @as(u32, 52);
pub const URB_FUNCTION_OPEN_STATIC_STREAMS = @as(u32, 53);
pub const URB_FUNCTION_CLOSE_STATIC_STREAMS = @as(u32, 54);
pub const URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER_USING_CHAINED_MDL = @as(u32, 55);
pub const URB_FUNCTION_ISOCH_TRANSFER_USING_CHAINED_MDL = @as(u32, 56);
pub const URB_FUNCTION_GET_ISOCH_PIPE_TRANSFER_PATH_DELAYS = @as(u32, 61);
pub const URB_FUNCTION_RESET_PIPE = @as(u32, 30);
pub const USBD_SHORT_TRANSFER_OK = @as(u32, 2);
pub const USBD_START_ISO_TRANSFER_ASAP = @as(u32, 4);
pub const USBD_DEFAULT_PIPE_TRANSFER = @as(u32, 8);
pub const USBD_TRANSFER_DIRECTION_OUT = @as(u32, 0);
pub const USBD_TRANSFER_DIRECTION_IN = @as(u32, 1);
pub const USBD_TRANSFER_DIRECTION = @as(u32, 1);
pub const USBD_ISO_START_FRAME_RANGE = @as(u32, 1024);
pub const USBD_DEFAULT_MAXIMUM_TRANSFER_SIZE = @as(u32, 4294967295);
pub const USBD_PF_CHANGE_MAX_PACKET = @as(u32, 1);
pub const USBD_PF_SHORT_PACKET_OPT = @as(u32, 2);
pub const USBD_PF_ENABLE_RT_THREAD_ACCESS = @as(u32, 4);
pub const USBD_PF_MAP_ADD_TRANSFERS = @as(u32, 8);
pub const USBD_PF_VIDEO_PRIORITY = @as(u32, 16);
pub const USBD_PF_VOICE_PRIORITY = @as(u32, 32);
pub const USBD_PF_INTERACTIVE_PRIORITY = @as(u32, 48);
pub const USBD_PF_PRIORITY_MASK = @as(u32, 240);
pub const USBD_PF_HANDLES_SSP_HIGH_BANDWIDTH_ISOCH = @as(u32, 256);
pub const USBD_PF_SSP_HIGH_BANDWIDTH_ISOCH = @as(u32, 65536);
pub const OS_STRING_DESCRIPTOR_INDEX = @as(u32, 238);
pub const MS_GENRE_DESCRIPTOR_INDEX = @as(u32, 1);
pub const MS_POWER_DESCRIPTOR_INDEX = @as(u32, 2);
pub const MS_OS_STRING_SIGNATURE = "MSFT100";
pub const MS_OS_FLAGS_CONTAINERID = @as(u32, 2);
pub const URB_OPEN_STATIC_STREAMS_VERSION_100 = @as(u32, 256);
pub const KREGUSBFNENUMPATH = "\\Registry\\Machine\\SYSTEM\\CurrentControlSet\\Control\\USBFN\\";
pub const UREGUSBFNENUMPATH = "HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\USBFN\\";
pub const KREGMANUSBFNENUMPATH = "\\Registry\\Machine\\SYSTEM\\CurrentControlSet\\Control\\ManufacturingMode\\Current\\USBFN\\";
pub const UREGMANUSBFNENUMPATH = "HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\ManufacturingMode\\Current\\USBFN\\";
pub const MAX_NUM_USBFN_ENDPOINTS = @as(u32, 15);
pub const MAX_CONFIGURATION_NAME_LENGTH = @as(u32, 40);
pub const MAX_USB_STRING_LENGTH = @as(u32, 255);
pub const MAX_SUPPORTED_CONFIGURATIONS = @as(u32, 12);
pub const USBFN_INTERRUPT_ENDPOINT_SIZE_NOT_UPDATEABLE_MASK = @as(u32, 128);
pub const USB_TEST_MODE_TEST_J = @as(u32, 1);
pub const USB_TEST_MODE_TEST_K = @as(u32, 2);
pub const USB_TEST_MODE_TEST_SE0_NAK = @as(u32, 3);
pub const USB_TEST_MODE_TEST_PACKET = @as(u32, 4);
pub const USB_TEST_MODE_TEST_FORCE_ENABLE = @as(u32, 5);
pub const MAX_INTERFACE_NAME_LENGTH = @as(u32, 40);
pub const MAX_ALTERNATE_NAME_LENGTH = @as(u32, 40);
pub const MAX_ASSOCIATION_NAME_LENGTH = @as(u32, 40);
pub const IOCTL_INTERNAL_USB_SUBMIT_URB = @as(u32, 2228227);
pub const IOCTL_INTERNAL_USB_RESET_PORT = @as(u32, 2228231);
pub const IOCTL_INTERNAL_USB_GET_ROOTHUB_PDO = @as(u32, 2228239);
pub const USBD_PORT_ENABLED = @as(u32, 1);
pub const USBD_PORT_CONNECTED = @as(u32, 2);
pub const IOCTL_INTERNAL_USB_GET_PORT_STATUS = @as(u32, 2228243);
pub const IOCTL_INTERNAL_USB_ENABLE_PORT = @as(u32, 2228247);
pub const IOCTL_INTERNAL_USB_GET_HUB_COUNT = @as(u32, 2228251);
pub const IOCTL_INTERNAL_USB_CYCLE_PORT = @as(u32, 2228255);
pub const IOCTL_INTERNAL_USB_GET_HUB_NAME = @as(u32, 2228256);
pub const IOCTL_INTERNAL_USB_GET_BUS_INFO = @as(u32, 2229280);
pub const IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME = @as(u32, 2229284);
pub const IOCTL_INTERNAL_USB_GET_BUSGUID_INFO = @as(u32, 2229288);
pub const IOCTL_INTERNAL_USB_GET_PARENT_HUB_INFO = @as(u32, 2229292);
pub const IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION = @as(u32, 2228263);
pub const IOCTL_INTERNAL_USB_GET_DEVICE_HANDLE = @as(u32, 2229299);
pub const IOCTL_INTERNAL_USB_NOTIFY_IDLE_READY = @as(u32, 2229315);
pub const IOCTL_INTERNAL_USB_REQ_GLOBAL_SUSPEND = @as(u32, 2229319);
pub const IOCTL_INTERNAL_USB_REQ_GLOBAL_RESUME = @as(u32, 2229323);
pub const IOCTL_INTERNAL_USB_RECORD_FAILURE = @as(u32, 2228267);
pub const IOCTL_INTERNAL_USB_GET_DEVICE_HANDLE_EX = @as(u32, 2229303);
pub const IOCTL_INTERNAL_USB_GET_TT_DEVICE_HANDLE = @as(u32, 2229307);
pub const IOCTL_INTERNAL_USB_GET_TOPOLOGY_ADDRESS = @as(u32, 2229311);
pub const IOCTL_INTERNAL_USB_GET_DEVICE_CONFIG_INFO = @as(u32, 2229327);
pub const IOCTL_INTERNAL_USB_REGISTER_COMPOSITE_DEVICE = @as(u32, 4784131);
pub const IOCTL_INTERNAL_USB_UNREGISTER_COMPOSITE_DEVICE = @as(u32, 4784135);
pub const IOCTL_INTERNAL_USB_REQUEST_REMOTE_WAKE_NOTIFICATION = @as(u32, 4784139);
pub const IOCTL_INTERNAL_USB_FAIL_GET_STATUS_FROM_DEVICE = @as(u32, 2229347);
pub const IOCTL_USB_HCD_GET_STATS_1 = @as(u32, 2229244);
pub const IOCTL_USB_HCD_GET_STATS_2 = @as(u32, 2229288);
pub const IOCTL_USB_HCD_DISABLE_PORT = @as(u32, 2229296);
pub const IOCTL_USB_HCD_ENABLE_PORT = @as(u32, 2229300);
pub const IOCTL_USB_DIAGNOSTIC_MODE_ON = @as(u32, 2229248);
pub const IOCTL_USB_DIAGNOSTIC_MODE_OFF = @as(u32, 2229252);
pub const IOCTL_USB_GET_ROOT_HUB_NAME = @as(u32, 2229256);
pub const IOCTL_GET_HCD_DRIVERKEY_NAME = @as(u32, 2229284);
pub const IOCTL_USB_GET_NODE_INFORMATION = @as(u32, 2229256);
pub const IOCTL_USB_GET_NODE_CONNECTION_INFORMATION = @as(u32, 2229260);
pub const IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION = @as(u32, 2229264);
pub const IOCTL_USB_GET_NODE_CONNECTION_NAME = @as(u32, 2229268);
pub const IOCTL_USB_DIAG_IGNORE_HUBS_ON = @as(u32, 2229272);
pub const IOCTL_USB_DIAG_IGNORE_HUBS_OFF = @as(u32, 2229276);
pub const IOCTL_USB_GET_NODE_CONNECTION_DRIVERKEY_NAME = @as(u32, 2229280);
pub const IOCTL_USB_GET_HUB_CAPABILITIES = @as(u32, 2229308);
pub const IOCTL_USB_HUB_CYCLE_PORT = @as(u32, 2229316);
pub const IOCTL_USB_GET_NODE_CONNECTION_ATTRIBUTES = @as(u32, 2229312);
pub const IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX = @as(u32, 2229320);
pub const IOCTL_USB_RESET_HUB = @as(u32, 2229324);
pub const IOCTL_USB_GET_HUB_CAPABILITIES_EX = @as(u32, 2229328);
pub const IOCTL_USB_GET_HUB_INFORMATION_EX = @as(u32, 2229332);
pub const IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES = @as(u32, 2229336);
pub const IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 = @as(u32, 2229340);
pub const IOCTL_USB_GET_TRANSPORT_CHARACTERISTICS = @as(u32, 2229348);
pub const IOCTL_USB_REGISTER_FOR_TRANSPORT_CHARACTERISTICS_CHANGE = @as(u32, 2229352);
pub const IOCTL_USB_NOTIFY_ON_TRANSPORT_CHARACTERISTICS_CHANGE = @as(u32, 2229356);
pub const IOCTL_USB_UNREGISTER_FOR_TRANSPORT_CHARACTERISTICS_CHANGE = @as(u32, 2229360);
pub const IOCTL_USB_START_TRACKING_FOR_TIME_SYNC = @as(u32, 2229364);
pub const IOCTL_USB_GET_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC = @as(u32, 2229368);
pub const IOCTL_USB_STOP_TRACKING_FOR_TIME_SYNC = @as(u32, 2229372);
pub const IOCTL_USB_GET_DEVICE_CHARACTERISTICS = @as(u32, 2229376);
pub const WMI_USB_DRIVER_INFORMATION = @as(u32, 0);
pub const WMI_USB_DRIVER_NOTIFICATION = @as(u32, 1);
pub const WMI_USB_POWER_DEVICE_ENABLE = @as(u32, 2);
pub const WMI_USB_HUB_NODE_INFORMATION = @as(u32, 4);
pub const WMI_USB_PERFORMANCE_INFORMATION = @as(u32, 1);
pub const WMI_USB_DEVICE_NODE_INFORMATION = @as(u32, 2);
pub const USB_TRANSPORT_CHARACTERISTICS_VERSION_1 = @as(u32, 1);
pub const USB_TRANSPORT_CHARACTERISTICS_LATENCY_AVAILABLE = @as(u32, 1);
pub const USB_TRANSPORT_CHARACTERISTICS_BANDWIDTH_AVAILABLE = @as(u32, 2);
pub const USB_REGISTER_FOR_TRANSPORT_LATENCY_CHANGE = @as(u32, 1);
pub const USB_REGISTER_FOR_TRANSPORT_BANDWIDTH_CHANGE = @as(u32, 2);
pub const USB_DEVICE_CHARACTERISTICS_VERSION_1 = @as(u32, 1);
pub const USB_DEVICE_CHARACTERISTICS_MAXIMUM_PATH_DELAYS_AVAILABLE = @as(u32, 1);
pub const MAX_NUM_PIPES = @as(u32, 8);
pub const BULKIN_FLAG = @as(u32, 128);
pub const FILE_DEVICE_USB_SCAN = @as(u32, 32768);
pub const IOCTL_INDEX = @as(u32, 2048);
pub const IOCTL_GET_VERSION = @as(u32, 2147491840);
pub const IOCTL_CANCEL_IO = @as(u32, 2147491844);
pub const IOCTL_WAIT_ON_DEVICE_EVENT = @as(u32, 2147491848);
pub const IOCTL_READ_REGISTERS = @as(u32, 2147491852);
pub const IOCTL_WRITE_REGISTERS = @as(u32, 2147491856);
pub const IOCTL_GET_CHANNEL_ALIGN_RQST = @as(u32, 2147491860);
pub const IOCTL_GET_DEVICE_DESCRIPTOR = @as(u32, 2147491864);
pub const IOCTL_RESET_PIPE = @as(u32, 2147491868);
pub const IOCTL_GET_USB_DESCRIPTOR = @as(u32, 2147491872);
pub const IOCTL_SEND_USB_REQUEST = @as(u32, 2147491876);
pub const IOCTL_GET_PIPE_CONFIGURATION = @as(u32, 2147491880);
pub const IOCTL_SET_TIMEOUT = @as(u32, 2147491884);
pub const IOCTL_ABORT_PIPE = @as(u32, 2147491844);
pub const WinUSB_TestGuid = Guid.initString("da812bff-12c3-46a2-8e2b-dbd3b7834c43");
//--------------------------------------------------------------------------------
// Section: Types (150)
//--------------------------------------------------------------------------------
pub const USB_DEVICE_SPEED = enum(i32) {
LowSpeed = 0,
FullSpeed = 1,
HighSpeed = 2,
SuperSpeed = 3,
};
pub const UsbLowSpeed = USB_DEVICE_SPEED.LowSpeed;
pub const UsbFullSpeed = USB_DEVICE_SPEED.FullSpeed;
pub const UsbHighSpeed = USB_DEVICE_SPEED.HighSpeed;
pub const UsbSuperSpeed = USB_DEVICE_SPEED.SuperSpeed;
pub const USB_DEVICE_TYPE = enum(i32) {
@"11Device" = 0,
@"20Device" = 1,
};
pub const Usb11Device = USB_DEVICE_TYPE.@"11Device";
pub const Usb20Device = USB_DEVICE_TYPE.@"20Device";
pub const BM_REQUEST_TYPE = extern union {
pub const _BM = extern struct {
_bitfield: u8,
};
s: _BM,
B: u8,
};
pub const USB_DEFAULT_PIPE_SETUP_PACKET = extern struct {
pub const _wIndex = extern union {
Anonymous: extern struct {
LowByte: u8,
HiByte: u8,
} align(1),
W: u16 align(1),
};
pub const _wValue = extern union {
Anonymous: extern struct {
LowByte: u8,
HiByte: u8,
} align(1),
W: u16 align(1),
};
bmRequestType: BM_REQUEST_TYPE align(1),
bRequest: u8 align(1),
wValue: _wValue align(1),
wIndex: _wIndex align(1),
wLength: u16 align(1),
};
pub const USB_DEVICE_STATUS = extern union {
AsUshort16: u16 align(1),
Anonymous: extern struct {
_bitfield: u16 align(1),
} align(1),
};
pub const USB_INTERFACE_STATUS = extern union {
AsUshort16: u16 align(1),
Anonymous: extern struct {
_bitfield: u16 align(1),
} align(1),
};
pub const USB_ENDPOINT_STATUS = extern union {
AsUshort16: u16 align(1),
Anonymous: extern struct {
_bitfield: u16 align(1),
} align(1),
};
pub const USB_COMMON_DESCRIPTOR = extern struct {
bLength: u8,
bDescriptorType: u8,
};
pub const USB_DEVICE_DESCRIPTOR = extern struct {
bLength: u8 align(1),
bDescriptorType: u8 align(1),
bcdUSB: u16 align(1),
bDeviceClass: u8 align(1),
bDeviceSubClass: u8 align(1),
bDeviceProtocol: u8 align(1),
bMaxPacketSize0: u8 align(1),
idVendor: u16 align(1),
idProduct: u16 align(1),
bcdDevice: u16 align(1),
iManufacturer: u8 align(1),
iProduct: u8 align(1),
iSerialNumber: u8 align(1),
bNumConfigurations: u8 align(1),
};
pub const USB_DEVICE_QUALIFIER_DESCRIPTOR = extern struct {
bLength: u8 align(1),
bDescriptorType: u8 align(1),
bcdUSB: u16 align(1),
bDeviceClass: u8 align(1),
bDeviceSubClass: u8 align(1),
bDeviceProtocol: u8 align(1),
bMaxPacketSize0: u8 align(1),
bNumConfigurations: u8 align(1),
bReserved: u8 align(1),
};
pub const USB_BOS_DESCRIPTOR = extern struct {
bLength: u8 align(1),
bDescriptorType: u8 align(1),
wTotalLength: u16 align(1),
bNumDeviceCaps: u8 align(1),
};
pub const USB_DEVICE_CAPABILITY_USB20_EXTENSION_DESCRIPTOR = extern struct {
bLength: u8,
bDescriptorType: u8,
bDevCapabilityType: u8,
bmAttributes: extern union {
AsUlong: u32 align(1),
Anonymous: extern struct {
_bitfield: u32 align(1),
} align(1),
},
};
pub const USB_DEVICE_CAPABILITY_POWER_DELIVERY_DESCRIPTOR = extern struct {
bLength: u8 align(1),
bDescriptorType: u8 align(1),
bDevCapabilityType: u8 align(1),
bReserved: u8 align(1),
bmAttributes: extern union {
AsUlong: u32 align(1),
Anonymous: extern struct {
_bitfield: u32 align(1),
} align(1),
} align(1),
bmProviderPorts: u16 align(1),
bmConsumerPorts: u16 align(1),
bcdBCVersion: u16 align(1),
bcdPDVersion: u16 align(1),
bcdUSBTypeCVersion: u16 align(1),
};
pub const USB_DEVICE_CAPABILITY_PD_CONSUMER_PORT_DESCRIPTOR = extern struct {
bLength: u8 align(1),
bDescriptorType: u8 align(1),
bDevCapabilityType: u8 align(1),
bReserved: u8 align(1),
bmCapabilities: extern union {
AsUshort: u16 align(1),
Anonymous: extern struct {
_bitfield: u16 align(1),
} align(1),
} align(1),
wMinVoltage: u16 align(1),
wMaxVoltage: u16 align(1),
wReserved: u16 align(1),
dwMaxOperatingPower: u32 align(1),
dwMaxPeakPower: u32 align(1),
dwMaxPeakPowerTime: u32 align(1),
};
pub const USB_DEVICE_CAPABILITY_SUPERSPEED_USB_DESCRIPTOR = extern struct {
bLength: u8 align(1),
bDescriptorType: u8 align(1),
bDevCapabilityType: u8 align(1),
bmAttributes: u8 align(1),
wSpeedsSupported: u16 align(1),
bFunctionalitySupport: u8 align(1),
bU1DevExitLat: u8 align(1),
wU2DevExitLat: u16 align(1),
};
pub const USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED = extern union {
AsUlong32: u32 align(1),
Anonymous: extern struct {
_bitfield: u32 align(1),
} align(1),
};
pub const USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_USB_DESCRIPTOR = extern struct {
bLength: u8 align(1),
bDescriptorType: u8 align(1),
bDevCapabilityType: u8 align(1),
bReserved: u8 align(1),
bmAttributes: extern union {
AsUlong: u32 align(1),
Anonymous: extern struct {
_bitfield: u32 align(1),
} align(1),
} align(1),
wFunctionalitySupport: extern union {
AsUshort: u16 align(1),
Anonymous: extern struct {
_bitfield: u16 align(1),
} align(1),
} align(1),
wReserved: u16 align(1),
bmSublinkSpeedAttr: [1]USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED align(1),
};
pub const USB_DEVICE_CAPABILITY_CONTAINER_ID_DESCRIPTOR = extern struct {
bLength: u8,
bDescriptorType: u8,
bDevCapabilityType: u8,
bReserved: u8,
ContainerID: [16]u8,
};
pub const USB_DEVICE_CAPABILITY_PLATFORM_DESCRIPTOR = extern struct {
bLength: u8 align(1),
bDescriptorType: u8 align(1),
bDevCapabilityType: u8 align(1),
bReserved: u8 align(1),
PlatformCapabilityUuid: Guid align(1),
CapabililityData: [1]u8 align(1),
};
pub const USB_DEVICE_CAPABILITY_BILLBOARD_DESCRIPTOR = extern struct {
bLength: u8 align(1),
bDescriptorType: u8 align(1),
bDevCapabilityType: u8 align(1),
iAddtionalInfoURL: u8 align(1),
bNumberOfAlternateModes: u8 align(1),
bPreferredAlternateMode: u8 align(1),
VconnPower: extern union {
AsUshort: u16 align(1),
Anonymous: extern struct {
_bitfield: u16 align(1),
} align(1),
} align(1),
bmConfigured: [32]u8 align(1),
bReserved: u32 align(1),
AlternateMode: [1]extern struct {
wSVID: u16 align(1),
bAlternateMode: u8 align(1),
iAlternateModeSetting: u8 align(1),
} align(1),
};
pub const USB_DEVICE_CAPABILITY_FIRMWARE_STATUS_DESCRIPTOR = extern struct {
bLength: u8,
bDescriptorType: u8,
bDevCapabilityType: u8,
bcdDescriptorVersion: u8,
bmAttributes: extern union {
AsUlong: u32 align(1),
Anonymous: extern struct {
_bitfield: u32 align(1),
} align(1),
},
};
pub const USB_DEVICE_CAPABILITY_DESCRIPTOR = extern struct {
bLength: u8,
bDescriptorType: u8,
bDevCapabilityType: u8,
};
pub const USB_CONFIGURATION_DESCRIPTOR = extern struct {
bLength: u8 align(1),
bDescriptorType: u8 align(1),
wTotalLength: u16 align(1),
bNumInterfaces: u8 align(1),
bConfigurationValue: u8 align(1),
iConfiguration: u8 align(1),
bmAttributes: u8 align(1),
MaxPower: u8 align(1),
};
pub const USB_INTERFACE_ASSOCIATION_DESCRIPTOR = extern struct {
bLength: u8,
bDescriptorType: u8,
bFirstInterface: u8,
bInterfaceCount: u8,
bFunctionClass: u8,
bFunctionSubClass: u8,
bFunctionProtocol: u8,
iFunction: u8,
};
pub const USB_INTERFACE_DESCRIPTOR = extern struct {
bLength: u8,
bDescriptorType: u8,
bInterfaceNumber: u8,
bAlternateSetting: u8,
bNumEndpoints: u8,
bInterfaceClass: u8,
bInterfaceSubClass: u8,
bInterfaceProtocol: u8,
iInterface: u8,
};
pub const USB_ENDPOINT_DESCRIPTOR = extern struct {
bLength: u8 align(1),
bDescriptorType: u8 align(1),
bEndpointAddress: u8 align(1),
bmAttributes: u8 align(1),
wMaxPacketSize: u16 align(1),
bInterval: u8 align(1),
};
pub const USB_HIGH_SPEED_MAXPACKET = extern union {
pub const _MP = extern struct {
_bitfield: u16 align(1),
};
us: u16 align(1),
};
pub const USB_STRING_DESCRIPTOR = extern struct {
bLength: u8 align(1),
bDescriptorType: u8 align(1),
bString: [1]u16 align(1),
};
pub const USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR = extern struct {
bLength: u8 align(1),
bDescriptorType: u8 align(1),
bMaxBurst: u8 align(1),
bmAttributes: extern union {
AsUchar: u8,
Bulk: extern struct {
_bitfield: u8,
},
Isochronous: extern struct {
_bitfield: u8,
},
} align(1),
wBytesPerInterval: u16 align(1),
};
pub const USB_SUPERSPEEDPLUS_ISOCH_ENDPOINT_COMPANION_DESCRIPTOR = extern struct {
bLength: u8 align(1),
bDescriptorType: u8 align(1),
wReserved: u16 align(1),
dwBytesPerInterval: u32 align(1),
};
pub const USB_HUB_DESCRIPTOR = extern struct {
bDescriptorLength: u8 align(1),
bDescriptorType: u8 align(1),
bNumberOfPorts: u8 align(1),
wHubCharacteristics: u16 align(1),
bPowerOnToPowerGood: u8 align(1),
bHubControlCurrent: u8 align(1),
bRemoveAndPowerMask: [64]u8 align(1),
};
pub const USB_30_HUB_DESCRIPTOR = extern struct {
bLength: u8 align(1),
bDescriptorType: u8 align(1),
bNumberOfPorts: u8 align(1),
wHubCharacteristics: u16 align(1),
bPowerOnToPowerGood: u8 align(1),
bHubControlCurrent: u8 align(1),
bHubHdrDecLat: u8 align(1),
wHubDelay: u16 align(1),
DeviceRemovable: u16 align(1),
};
pub const USB_HUB_STATUS = extern union {
AsUshort16: u16 align(1),
Anonymous: extern struct {
_bitfield: u16 align(1),
} align(1),
};
pub const USB_HUB_CHANGE = extern union {
AsUshort16: u16 align(1),
Anonymous: extern struct {
_bitfield: u16 align(1),
} align(1),
};
pub const USB_HUB_STATUS_AND_CHANGE = extern union {
AsUlong32: u32 align(1),
Anonymous: extern struct {
HubStatus: USB_HUB_STATUS,
HubChange: USB_HUB_CHANGE,
} align(1),
};
pub const USB_20_PORT_STATUS = extern union {
AsUshort16: u16 align(1),
Anonymous: extern struct {
_bitfield: u16 align(1),
} align(1),
};
pub const USB_20_PORT_CHANGE = extern union {
AsUshort16: u16 align(1),
Anonymous: extern struct {
_bitfield: u16 align(1),
} align(1),
};
pub const USB_30_PORT_STATUS = extern union {
AsUshort16: u16 align(1),
Anonymous: extern struct {
_bitfield: u16 align(1),
} align(1),
};
pub const USB_30_PORT_CHANGE = extern union {
AsUshort16: u16 align(1),
Anonymous: extern struct {
_bitfield: u16 align(1),
} align(1),
};
pub const USB_PORT_STATUS = extern union {
AsUshort16: u16 align(1),
Usb20PortStatus: USB_20_PORT_STATUS align(1),
Usb30PortStatus: USB_30_PORT_STATUS align(1),
};
pub const USB_PORT_CHANGE = extern union {
AsUshort16: u16 align(1),
Usb20PortChange: USB_20_PORT_CHANGE align(1),
Usb30PortChange: USB_30_PORT_CHANGE align(1),
};
pub const USB_PORT_EXT_STATUS = extern union {
AsUlong32: u32 align(1),
Anonymous: extern struct {
_bitfield: u32 align(1),
} align(1),
};
pub const USB_PORT_STATUS_AND_CHANGE = extern union {
AsUlong32: u32 align(1),
Anonymous: extern struct {
PortStatus: USB_PORT_STATUS,
PortChange: USB_PORT_CHANGE,
} align(1),
};
pub const USB_PORT_EXT_STATUS_AND_CHANGE = extern union {
AsUlong64: u64 align(1),
Anonymous: extern struct {
PortStatusChange: USB_PORT_STATUS_AND_CHANGE,
PortExtStatus: USB_PORT_EXT_STATUS,
} align(1),
};
pub const USB_HUB_30_PORT_REMOTE_WAKE_MASK = extern union {
AsUchar8: u8,
Anonymous: extern struct {
_bitfield: u8,
},
};
pub const USB_FUNCTION_SUSPEND_OPTIONS = extern union {
AsUchar: u8,
Anonymous: extern struct {
_bitfield: u8,
},
};
pub const USB_CONFIGURATION_POWER_DESCRIPTOR = extern struct {
bLength: u8 align(1),
bDescriptorType: u8 align(1),
SelfPowerConsumedD0: [3]u8 align(1),
bPowerSummaryId: u8 align(1),
bBusPowerSavingD1: u8 align(1),
bSelfPowerSavingD1: u8 align(1),
bBusPowerSavingD2: u8 align(1),
bSelfPowerSavingD2: u8 align(1),
bBusPowerSavingD3: u8 align(1),
bSelfPowerSavingD3: u8 align(1),
TransitionTimeFromD1: u16 align(1),
TransitionTimeFromD2: u16 align(1),
TransitionTimeFromD3: u16 align(1),
};
pub const USB_INTERFACE_POWER_DESCRIPTOR = extern struct {
bLength: u8 align(1),
bDescriptorType: u8 align(1),
bmCapabilitiesFlags: u8 align(1),
bBusPowerSavingD1: u8 align(1),
bSelfPowerSavingD1: u8 align(1),
bBusPowerSavingD2: u8 align(1),
bSelfPowerSavingD2: u8 align(1),
bBusPowerSavingD3: u8 align(1),
bSelfPowerSavingD3: u8 align(1),
TransitionTimeFromD1: u16 align(1),
TransitionTimeFromD2: u16 align(1),
TransitionTimeFromD3: u16 align(1),
};
pub const USB_CONTROLLER_FLAVOR = enum(i32) {
USB_HcGeneric = 0,
OHCI_Generic = 100,
OHCI_Hydra = 101,
OHCI_NEC = 102,
UHCI_Generic = 200,
UHCI_Piix4 = 201,
UHCI_Piix3 = 202,
UHCI_Ich2 = 203,
UHCI_Reserved204 = 204,
UHCI_Ich1 = 205,
UHCI_Ich3m = 206,
UHCI_Ich4 = 207,
UHCI_Ich5 = 208,
UHCI_Ich6 = 209,
UHCI_Intel = 249,
UHCI_VIA = 250,
UHCI_VIA_x01 = 251,
UHCI_VIA_x02 = 252,
UHCI_VIA_x03 = 253,
UHCI_VIA_x04 = 254,
UHCI_VIA_x0E_FIFO = 264,
EHCI_Generic = 1000,
EHCI_NEC = 2000,
EHCI_Lucent = 3000,
EHCI_NVIDIA_Tegra2 = 4000,
EHCI_NVIDIA_Tegra3 = 4001,
EHCI_Intel_Medfield = 5001,
};
pub const USB_HcGeneric = USB_CONTROLLER_FLAVOR.USB_HcGeneric;
pub const OHCI_Generic = USB_CONTROLLER_FLAVOR.OHCI_Generic;
pub const OHCI_Hydra = USB_CONTROLLER_FLAVOR.OHCI_Hydra;
pub const OHCI_NEC = USB_CONTROLLER_FLAVOR.OHCI_NEC;
pub const UHCI_Generic = USB_CONTROLLER_FLAVOR.UHCI_Generic;
pub const UHCI_Piix4 = USB_CONTROLLER_FLAVOR.UHCI_Piix4;
pub const UHCI_Piix3 = USB_CONTROLLER_FLAVOR.UHCI_Piix3;
pub const UHCI_Ich2 = USB_CONTROLLER_FLAVOR.UHCI_Ich2;
pub const UHCI_Reserved204 = USB_CONTROLLER_FLAVOR.UHCI_Reserved204;
pub const UHCI_Ich1 = USB_CONTROLLER_FLAVOR.UHCI_Ich1;
pub const UHCI_Ich3m = USB_CONTROLLER_FLAVOR.UHCI_Ich3m;
pub const UHCI_Ich4 = USB_CONTROLLER_FLAVOR.UHCI_Ich4;
pub const UHCI_Ich5 = USB_CONTROLLER_FLAVOR.UHCI_Ich5;
pub const UHCI_Ich6 = USB_CONTROLLER_FLAVOR.UHCI_Ich6;
pub const UHCI_Intel = USB_CONTROLLER_FLAVOR.UHCI_Intel;
pub const UHCI_VIA = USB_CONTROLLER_FLAVOR.UHCI_VIA;
pub const UHCI_VIA_x01 = USB_CONTROLLER_FLAVOR.UHCI_VIA_x01;
pub const UHCI_VIA_x02 = USB_CONTROLLER_FLAVOR.UHCI_VIA_x02;
pub const UHCI_VIA_x03 = USB_CONTROLLER_FLAVOR.UHCI_VIA_x03;
pub const UHCI_VIA_x04 = USB_CONTROLLER_FLAVOR.UHCI_VIA_x04;
pub const UHCI_VIA_x0E_FIFO = USB_CONTROLLER_FLAVOR.UHCI_VIA_x0E_FIFO;
pub const EHCI_Generic = USB_CONTROLLER_FLAVOR.EHCI_Generic;
pub const EHCI_NEC = USB_CONTROLLER_FLAVOR.EHCI_NEC;
pub const EHCI_Lucent = USB_CONTROLLER_FLAVOR.EHCI_Lucent;
pub const EHCI_NVIDIA_Tegra2 = USB_CONTROLLER_FLAVOR.EHCI_NVIDIA_Tegra2;
pub const EHCI_NVIDIA_Tegra3 = USB_CONTROLLER_FLAVOR.EHCI_NVIDIA_Tegra3;
pub const EHCI_Intel_Medfield = USB_CONTROLLER_FLAVOR.EHCI_Intel_Medfield;
pub const USBD_VERSION_INFORMATION = extern struct {
USBDI_Version: u32,
Supported_USB_Version: u32,
};
pub const USBD_PIPE_TYPE = enum(i32) {
Control = 0,
Isochronous = 1,
Bulk = 2,
Interrupt = 3,
};
pub const UsbdPipeTypeControl = USBD_PIPE_TYPE.Control;
pub const UsbdPipeTypeIsochronous = USBD_PIPE_TYPE.Isochronous;
pub const UsbdPipeTypeBulk = USBD_PIPE_TYPE.Bulk;
pub const UsbdPipeTypeInterrupt = USBD_PIPE_TYPE.Interrupt;
pub const USBD_DEVICE_INFORMATION = extern struct {
OffsetNext: u32,
UsbdDeviceHandle: ?*anyopaque,
DeviceDescriptor: USB_DEVICE_DESCRIPTOR,
};
pub const USBD_PIPE_INFORMATION = extern struct {
MaximumPacketSize: u16,
EndpointAddress: u8,
Interval: u8,
PipeType: USBD_PIPE_TYPE,
PipeHandle: ?*anyopaque,
MaximumTransferSize: u32,
PipeFlags: u32,
};
pub const USBD_ENDPOINT_OFFLOAD_MODE = enum(i32) {
ModeNotSupported = 0,
SoftwareAssisted = 1,
HardwareAssisted = 2,
};
pub const UsbdEndpointOffloadModeNotSupported = USBD_ENDPOINT_OFFLOAD_MODE.ModeNotSupported;
pub const UsbdEndpointOffloadSoftwareAssisted = USBD_ENDPOINT_OFFLOAD_MODE.SoftwareAssisted;
pub const UsbdEndpointOffloadHardwareAssisted = USBD_ENDPOINT_OFFLOAD_MODE.HardwareAssisted;
pub const USBD_ENDPOINT_OFFLOAD_INFORMATION = extern struct {
Size: u32 align(1),
EndpointAddress: u16 align(1),
ResourceId: u32 align(1),
Mode: USBD_ENDPOINT_OFFLOAD_MODE align(1),
_bitfield1: u32 align(1),
_bitfield2: u32 align(1),
TransferSegmentLA: LARGE_INTEGER align(1),
TransferSegmentVA: ?*anyopaque align(1),
TransferRingSize: usize align(1),
TransferRingInitialCycleBit: u32 align(1),
MessageNumber: u32 align(1),
EventRingSegmentLA: LARGE_INTEGER align(1),
EventRingSegmentVA: ?*anyopaque align(1),
EventRingSize: usize align(1),
EventRingInitialCycleBit: u32 align(1),
};
pub const USBD_INTERFACE_INFORMATION = extern struct {
Length: u16,
InterfaceNumber: u8,
AlternateSetting: u8,
Class: u8,
SubClass: u8,
Protocol: u8,
Reserved: u8,
InterfaceHandle: ?*anyopaque,
NumberOfPipes: u32,
Pipes: [1]USBD_PIPE_INFORMATION,
};
pub const _URB_HCD_AREA = extern struct {
Reserved8: [8]?*anyopaque,
};
pub const _URB_HEADER = extern struct {
Length: u16,
Function: u16,
Status: i32,
UsbdDeviceHandle: ?*anyopaque,
UsbdFlags: u32,
};
pub const _URB_SELECT_INTERFACE = extern struct {
Hdr: _URB_HEADER,
ConfigurationHandle: ?*anyopaque,
Interface: USBD_INTERFACE_INFORMATION,
};
pub const _URB_SELECT_CONFIGURATION = extern struct {
Hdr: _URB_HEADER,
ConfigurationDescriptor: ?*USB_CONFIGURATION_DESCRIPTOR,
ConfigurationHandle: ?*anyopaque,
Interface: USBD_INTERFACE_INFORMATION,
};
pub const _URB_PIPE_REQUEST = extern struct {
Hdr: _URB_HEADER,
PipeHandle: ?*anyopaque,
Reserved: u32,
};
pub const _URB_FRAME_LENGTH_CONTROL = extern struct {
Hdr: _URB_HEADER,
};
pub const _URB_GET_FRAME_LENGTH = extern struct {
Hdr: _URB_HEADER,
FrameLength: u32,
FrameNumber: u32,
};
pub const _URB_SET_FRAME_LENGTH = extern struct {
Hdr: _URB_HEADER,
FrameLengthDelta: i32,
};
pub const _URB_GET_CURRENT_FRAME_NUMBER = extern struct {
Hdr: _URB_HEADER,
FrameNumber: u32,
};
pub const _URB_CONTROL_DESCRIPTOR_REQUEST = extern struct {
Hdr: _URB_HEADER,
Reserved: ?*anyopaque,
Reserved0: u32,
TransferBufferLength: u32,
TransferBuffer: ?*anyopaque,
TransferBufferMDL: ?*anyopaque,
UrbLink: ?*URB,
hca: _URB_HCD_AREA,
Reserved1: u16,
Index: u8,
DescriptorType: u8,
LanguageId: u16,
Reserved2: u16,
};
pub const _URB_CONTROL_GET_STATUS_REQUEST = extern struct {
Hdr: _URB_HEADER,
Reserved: ?*anyopaque,
Reserved0: u32,
TransferBufferLength: u32,
TransferBuffer: ?*anyopaque,
TransferBufferMDL: ?*anyopaque,
UrbLink: ?*URB,
hca: _URB_HCD_AREA,
Reserved1: [4]u8,
Index: u16,
Reserved2: u16,
};
pub const _URB_CONTROL_FEATURE_REQUEST = extern struct {
Hdr: _URB_HEADER,
Reserved: ?*anyopaque,
Reserved2: u32,
Reserved3: u32,
Reserved4: ?*anyopaque,
Reserved5: ?*anyopaque,
UrbLink: ?*URB,
hca: _URB_HCD_AREA,
Reserved0: u16,
FeatureSelector: u16,
Index: u16,
Reserved1: u16,
};
pub const _URB_CONTROL_VENDOR_OR_CLASS_REQUEST = extern struct {
Hdr: _URB_HEADER,
Reserved: ?*anyopaque,
TransferFlags: u32,
TransferBufferLength: u32,
TransferBuffer: ?*anyopaque,
TransferBufferMDL: ?*anyopaque,
UrbLink: ?*URB,
hca: _URB_HCD_AREA,
RequestTypeReservedBits: u8,
Request: u8,
Value: u16,
Index: u16,
Reserved1: u16,
};
pub const _URB_CONTROL_GET_INTERFACE_REQUEST = extern struct {
Hdr: _URB_HEADER,
Reserved: ?*anyopaque,
Reserved0: u32,
TransferBufferLength: u32,
TransferBuffer: ?*anyopaque,
TransferBufferMDL: ?*anyopaque,
UrbLink: ?*URB,
hca: _URB_HCD_AREA,
Reserved1: [4]u8,
Interface: u16,
Reserved2: u16,
};
pub const _URB_CONTROL_GET_CONFIGURATION_REQUEST = extern struct {
Hdr: _URB_HEADER,
Reserved: ?*anyopaque,
Reserved0: u32,
TransferBufferLength: u32,
TransferBuffer: ?*anyopaque,
TransferBufferMDL: ?*anyopaque,
UrbLink: ?*URB,
hca: _URB_HCD_AREA,
Reserved1: [8]u8,
};
pub const OS_STRING = extern struct {
bLength: u8,
bDescriptorType: u8,
MicrosoftString: [7]u16,
bVendorCode: u8,
Anonymous: extern union {
bPad: u8,
bFlags: u8,
},
};
pub const _URB_OS_FEATURE_DESCRIPTOR_REQUEST = extern struct {
Hdr: _URB_HEADER,
Reserved: ?*anyopaque,
Reserved0: u32,
TransferBufferLength: u32,
TransferBuffer: ?*anyopaque,
TransferBufferMDL: ?*anyopaque,
UrbLink: ?*URB,
hca: _URB_HCD_AREA,
_bitfield: u8,
Reserved2: u8,
InterfaceNumber: u8,
MS_PageIndex: u8,
MS_FeatureDescriptorIndex: u16,
Reserved3: u16,
};
pub const _URB_CONTROL_TRANSFER = extern struct {
Hdr: _URB_HEADER,
PipeHandle: ?*anyopaque,
TransferFlags: u32,
TransferBufferLength: u32,
TransferBuffer: ?*anyopaque,
TransferBufferMDL: ?*anyopaque,
UrbLink: ?*URB,
hca: _URB_HCD_AREA,
SetupPacket: [8]u8,
};
pub const _URB_CONTROL_TRANSFER_EX = extern struct {
Hdr: _URB_HEADER,
PipeHandle: ?*anyopaque,
TransferFlags: u32,
TransferBufferLength: u32,
TransferBuffer: ?*anyopaque,
TransferBufferMDL: ?*anyopaque,
Timeout: u32,
hca: _URB_HCD_AREA,
SetupPacket: [8]u8,
};
pub const _URB_BULK_OR_INTERRUPT_TRANSFER = extern struct {
Hdr: _URB_HEADER,
PipeHandle: ?*anyopaque,
TransferFlags: u32,
TransferBufferLength: u32,
TransferBuffer: ?*anyopaque,
TransferBufferMDL: ?*anyopaque,
UrbLink: ?*URB,
hca: _URB_HCD_AREA,
};
pub const USBD_ISO_PACKET_DESCRIPTOR = extern struct {
Offset: u32,
Length: u32,
Status: i32,
};
pub const _URB_ISOCH_TRANSFER = extern struct {
Hdr: _URB_HEADER,
PipeHandle: ?*anyopaque,
TransferFlags: u32,
TransferBufferLength: u32,
TransferBuffer: ?*anyopaque,
TransferBufferMDL: ?*anyopaque,
UrbLink: ?*URB,
hca: _URB_HCD_AREA,
StartFrame: u32,
NumberOfPackets: u32,
ErrorCount: u32,
IsoPacket: [1]USBD_ISO_PACKET_DESCRIPTOR,
};
pub const USBD_STREAM_INFORMATION = extern struct {
PipeHandle: ?*anyopaque,
StreamID: u32,
MaximumTransferSize: u32,
PipeFlags: u32,
};
pub const _URB_OPEN_STATIC_STREAMS = extern struct {
Hdr: _URB_HEADER,
PipeHandle: ?*anyopaque,
NumberOfStreams: u32,
StreamInfoVersion: u16,
StreamInfoSize: u16,
Streams: ?*USBD_STREAM_INFORMATION,
};
pub const _URB_GET_ISOCH_PIPE_TRANSFER_PATH_DELAYS = extern struct {
Hdr: _URB_HEADER,
PipeHandle: ?*anyopaque,
MaximumSendPathDelayInMilliSeconds: u32,
MaximumCompletionPathDelayInMilliSeconds: u32,
};
pub const URB = extern struct {
Anonymous: extern union {
UrbHeader: _URB_HEADER,
UrbSelectInterface: _URB_SELECT_INTERFACE,
UrbSelectConfiguration: _URB_SELECT_CONFIGURATION,
UrbPipeRequest: _URB_PIPE_REQUEST,
UrbFrameLengthControl: _URB_FRAME_LENGTH_CONTROL,
UrbGetFrameLength: _URB_GET_FRAME_LENGTH,
UrbSetFrameLength: _URB_SET_FRAME_LENGTH,
UrbGetCurrentFrameNumber: _URB_GET_CURRENT_FRAME_NUMBER,
UrbControlTransfer: _URB_CONTROL_TRANSFER,
UrbControlTransferEx: _URB_CONTROL_TRANSFER_EX,
UrbBulkOrInterruptTransfer: _URB_BULK_OR_INTERRUPT_TRANSFER,
UrbIsochronousTransfer: _URB_ISOCH_TRANSFER,
UrbControlDescriptorRequest: _URB_CONTROL_DESCRIPTOR_REQUEST,
UrbControlGetStatusRequest: _URB_CONTROL_GET_STATUS_REQUEST,
UrbControlFeatureRequest: _URB_CONTROL_FEATURE_REQUEST,
UrbControlVendorClassRequest: _URB_CONTROL_VENDOR_OR_CLASS_REQUEST,
UrbControlGetInterfaceRequest: _URB_CONTROL_GET_INTERFACE_REQUEST,
UrbControlGetConfigurationRequest: _URB_CONTROL_GET_CONFIGURATION_REQUEST,
UrbOSFeatureDescriptorRequest: _URB_OS_FEATURE_DESCRIPTOR_REQUEST,
UrbOpenStaticStreams: _URB_OPEN_STATIC_STREAMS,
UrbGetIsochPipeTransferPathDelays: _URB_GET_ISOCH_PIPE_TRANSFER_PATH_DELAYS,
},
};
pub const USB_IDLE_CALLBACK = switch (@import("builtin").zig_backend) {
.stage1 => fn(
Context: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) void,
else => *const fn(
Context: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) void,
} ;
pub const USB_IDLE_CALLBACK_INFO = extern struct {
IdleCallback: ?USB_IDLE_CALLBACK,
IdleContext: ?*anyopaque,
};
pub const USB_USER_ERROR_CODE = enum(i32) {
Success = 0,
NotSupported = 1,
InvalidRequestCode = 2,
FeatureDisabled = 3,
InvalidHeaderParameter = 4,
InvalidParameter = 5,
MiniportError = 6,
BufferTooSmall = 7,
ErrorNotMapped = 8,
DeviceNotStarted = 9,
NoDeviceConnected = 10,
};
pub const UsbUserSuccess = USB_USER_ERROR_CODE.Success;
pub const UsbUserNotSupported = USB_USER_ERROR_CODE.NotSupported;
pub const UsbUserInvalidRequestCode = USB_USER_ERROR_CODE.InvalidRequestCode;
pub const UsbUserFeatureDisabled = USB_USER_ERROR_CODE.FeatureDisabled;
pub const UsbUserInvalidHeaderParameter = USB_USER_ERROR_CODE.InvalidHeaderParameter;
pub const UsbUserInvalidParameter = USB_USER_ERROR_CODE.InvalidParameter;
pub const UsbUserMiniportError = USB_USER_ERROR_CODE.MiniportError;
pub const UsbUserBufferTooSmall = USB_USER_ERROR_CODE.BufferTooSmall;
pub const UsbUserErrorNotMapped = USB_USER_ERROR_CODE.ErrorNotMapped;
pub const UsbUserDeviceNotStarted = USB_USER_ERROR_CODE.DeviceNotStarted;
pub const UsbUserNoDeviceConnected = USB_USER_ERROR_CODE.NoDeviceConnected;
pub const USBUSER_REQUEST_HEADER = extern struct {
UsbUserRequest: u32 align(1),
UsbUserStatusCode: USB_USER_ERROR_CODE align(1),
RequestBufferLength: u32 align(1),
ActualBufferLength: u32 align(1),
};
pub const PACKET_PARAMETERS = extern struct {
DeviceAddress: u8 align(1),
EndpointAddress: u8 align(1),
MaximumPacketSize: u16 align(1),
Timeout: u32 align(1),
Flags: u32 align(1),
DataLength: u32 align(1),
HubDeviceAddress: u16 align(1),
PortTTNumber: u16 align(1),
ErrorCount: u8 align(1),
Pad: [3]u8 align(1),
UsbdStatusCode: i32 align(1),
Data: [4]u8 align(1),
};
pub const USBUSER_SEND_ONE_PACKET = extern struct {
Header: USBUSER_REQUEST_HEADER,
PacketParameters: PACKET_PARAMETERS,
};
pub const RAW_RESET_PORT_PARAMETERS = extern struct {
PortNumber: u16 align(1),
PortStatus: u16 align(1),
};
pub const USBUSER_RAW_RESET_ROOT_PORT = extern struct {
Header: USBUSER_REQUEST_HEADER,
Parameters: RAW_RESET_PORT_PARAMETERS,
};
pub const RAW_ROOTPORT_FEATURE = extern struct {
PortNumber: u16 align(1),
PortFeature: u16 align(1),
PortStatus: u16 align(1),
};
pub const USBUSER_ROOTPORT_FEATURE_REQUEST = extern struct {
Header: USBUSER_REQUEST_HEADER,
Parameters: RAW_ROOTPORT_FEATURE,
};
pub const RAW_ROOTPORT_PARAMETERS = extern struct {
PortNumber: u16 align(1),
PortStatus: u16 align(1),
};
pub const USBUSER_ROOTPORT_PARAMETERS = extern struct {
Header: USBUSER_REQUEST_HEADER,
Parameters: RAW_ROOTPORT_PARAMETERS,
};
pub const USB_CONTROLLER_INFO_0 = extern struct {
PciVendorId: u32 align(1),
PciDeviceId: u32 align(1),
PciRevision: u32 align(1),
NumberOfRootPorts: u32 align(1),
ControllerFlavor: USB_CONTROLLER_FLAVOR align(1),
HcFeatureFlags: u32 align(1),
};
pub const USBUSER_CONTROLLER_INFO_0 = extern struct {
Header: USBUSER_REQUEST_HEADER,
Info0: USB_CONTROLLER_INFO_0,
};
pub const USB_UNICODE_NAME = extern struct {
Length: u32 align(1),
String: [1]u16 align(1),
};
pub const USBUSER_CONTROLLER_UNICODE_NAME = extern struct {
Header: USBUSER_REQUEST_HEADER,
UnicodeName: USB_UNICODE_NAME,
};
pub const USB_PASS_THRU_PARAMETERS = extern struct {
FunctionGUID: Guid align(1),
ParameterLength: u32 align(1),
Parameters: [4]u8 align(1),
};
pub const USBUSER_PASS_THRU_REQUEST = extern struct {
Header: USBUSER_REQUEST_HEADER,
PassThru: USB_PASS_THRU_PARAMETERS,
};
pub const WDMUSB_POWER_STATE = enum(i32) {
NotMapped = 0,
SystemUnspecified = 100,
SystemWorking = 101,
SystemSleeping1 = 102,
SystemSleeping2 = 103,
SystemSleeping3 = 104,
SystemHibernate = 105,
SystemShutdown = 106,
DeviceUnspecified = 200,
DeviceD0 = 201,
DeviceD1 = 202,
DeviceD2 = 203,
DeviceD3 = 204,
};
pub const WdmUsbPowerNotMapped = WDMUSB_POWER_STATE.NotMapped;
pub const WdmUsbPowerSystemUnspecified = WDMUSB_POWER_STATE.SystemUnspecified;
pub const WdmUsbPowerSystemWorking = WDMUSB_POWER_STATE.SystemWorking;
pub const WdmUsbPowerSystemSleeping1 = WDMUSB_POWER_STATE.SystemSleeping1;
pub const WdmUsbPowerSystemSleeping2 = WDMUSB_POWER_STATE.SystemSleeping2;
pub const WdmUsbPowerSystemSleeping3 = WDMUSB_POWER_STATE.SystemSleeping3;
pub const WdmUsbPowerSystemHibernate = WDMUSB_POWER_STATE.SystemHibernate;
pub const WdmUsbPowerSystemShutdown = WDMUSB_POWER_STATE.SystemShutdown;
pub const WdmUsbPowerDeviceUnspecified = WDMUSB_POWER_STATE.DeviceUnspecified;
pub const WdmUsbPowerDeviceD0 = WDMUSB_POWER_STATE.DeviceD0;
pub const WdmUsbPowerDeviceD1 = WDMUSB_POWER_STATE.DeviceD1;
pub const WdmUsbPowerDeviceD2 = WDMUSB_POWER_STATE.DeviceD2;
pub const WdmUsbPowerDeviceD3 = WDMUSB_POWER_STATE.DeviceD3;
pub const USB_POWER_INFO = extern struct {
SystemState: WDMUSB_POWER_STATE align(1),
HcDevicePowerState: WDMUSB_POWER_STATE align(1),
HcDeviceWake: WDMUSB_POWER_STATE align(1),
HcSystemWake: WDMUSB_POWER_STATE align(1),
RhDevicePowerState: WDMUSB_POWER_STATE align(1),
RhDeviceWake: WDMUSB_POWER_STATE align(1),
RhSystemWake: WDMUSB_POWER_STATE align(1),
LastSystemSleepState: WDMUSB_POWER_STATE align(1),
CanWakeup: BOOLEAN align(1),
IsPowered: BOOLEAN align(1),
};
pub const USBUSER_POWER_INFO_REQUEST = extern struct {
Header: USBUSER_REQUEST_HEADER,
PowerInformation: USB_POWER_INFO,
};
pub const USB_OPEN_RAW_DEVICE_PARAMETERS = extern struct {
PortStatus: u16 align(1),
MaxPacketEp0: u16 align(1),
};
pub const USBUSER_OPEN_RAW_DEVICE = extern struct {
Header: USBUSER_REQUEST_HEADER,
Parameters: USB_OPEN_RAW_DEVICE_PARAMETERS,
};
pub const USB_CLOSE_RAW_DEVICE_PARAMETERS = extern struct {
xxx: u32 align(1),
};
pub const USBUSER_CLOSE_RAW_DEVICE = extern struct {
Header: USBUSER_REQUEST_HEADER,
Parameters: USB_CLOSE_RAW_DEVICE_PARAMETERS,
};
pub const USB_SEND_RAW_COMMAND_PARAMETERS = extern struct {
Usb_bmRequest: u8 align(1),
Usb_bRequest: u8 align(1),
Usb_wVlaue: u16 align(1),
Usb_wIndex: u16 align(1),
Usb_wLength: u16 align(1),
DeviceAddress: u16 align(1),
MaximumPacketSize: u16 align(1),
Timeout: u32 align(1),
DataLength: u32 align(1),
UsbdStatusCode: i32 align(1),
Data: [4]u8 align(1),
};
pub const USBUSER_SEND_RAW_COMMAND = extern struct {
Header: USBUSER_REQUEST_HEADER,
Parameters: USB_SEND_RAW_COMMAND_PARAMETERS,
};
pub const USB_BANDWIDTH_INFO = extern struct {
DeviceCount: u32 align(1),
TotalBusBandwidth: u32 align(1),
Total32secBandwidth: u32 align(1),
AllocedBulkAndControl: u32 align(1),
AllocedIso: u32 align(1),
AllocedInterrupt_1ms: u32 align(1),
AllocedInterrupt_2ms: u32 align(1),
AllocedInterrupt_4ms: u32 align(1),
AllocedInterrupt_8ms: u32 align(1),
AllocedInterrupt_16ms: u32 align(1),
AllocedInterrupt_32ms: u32 align(1),
};
pub const USBUSER_BANDWIDTH_INFO_REQUEST = extern struct {
Header: USBUSER_REQUEST_HEADER,
BandwidthInformation: USB_BANDWIDTH_INFO,
};
pub const USB_BUS_STATISTICS_0 = extern struct {
DeviceCount: u32 align(1),
CurrentSystemTime: LARGE_INTEGER align(1),
CurrentUsbFrame: u32 align(1),
BulkBytes: u32 align(1),
IsoBytes: u32 align(1),
InterruptBytes: u32 align(1),
ControlDataBytes: u32 align(1),
PciInterruptCount: u32 align(1),
HardResetCount: u32 align(1),
WorkerSignalCount: u32 align(1),
CommonBufferBytes: u32 align(1),
WorkerIdleTimeMs: u32 align(1),
RootHubEnabled: BOOLEAN align(1),
RootHubDevicePowerState: u8 align(1),
Unused: u8 align(1),
NameIndex: u8 align(1),
};
pub const USBUSER_BUS_STATISTICS_0_REQUEST = extern struct {
Header: USBUSER_REQUEST_HEADER,
BusStatistics0: USB_BUS_STATISTICS_0,
};
pub const USB_DRIVER_VERSION_PARAMETERS = extern struct {
DriverTrackingCode: u32 align(1),
USBDI_Version: u32 align(1),
USBUSER_Version: u32 align(1),
CheckedPortDriver: BOOLEAN align(1),
CheckedMiniportDriver: BOOLEAN align(1),
USB_Version: u16 align(1),
};
pub const USBUSER_GET_DRIVER_VERSION = extern struct {
Header: USBUSER_REQUEST_HEADER,
Parameters: USB_DRIVER_VERSION_PARAMETERS,
};
pub const USB_USB2HW_VERSION_PARAMETERS = extern struct {
Usb2HwRevision: u8,
};
pub const USBUSER_GET_USB2HW_VERSION = extern struct {
Header: USBUSER_REQUEST_HEADER,
Parameters: USB_USB2HW_VERSION_PARAMETERS,
};
pub const USBUSER_REFRESH_HCT_REG = extern struct {
Header: USBUSER_REQUEST_HEADER align(1),
Flags: u32 align(1),
};
pub const WINUSB_PIPE_INFORMATION = extern struct {
PipeType: USBD_PIPE_TYPE,
PipeId: u8,
MaximumPacketSize: u16,
Interval: u8,
};
pub const WINUSB_PIPE_INFORMATION_EX = extern struct {
PipeType: USBD_PIPE_TYPE,
PipeId: u8,
MaximumPacketSize: u16,
Interval: u8,
MaximumBytesPerInterval: u32,
};
pub const WINUSB_SETUP_PACKET = extern struct {
RequestType: u8 align(1),
Request: u8 align(1),
Value: u16 align(1),
Index: u16 align(1),
Length: u16 align(1),
};
pub const USB_START_TRACKING_FOR_TIME_SYNC_INFORMATION = extern struct {
TimeTrackingHandle: ?HANDLE align(1),
IsStartupDelayTolerable: BOOLEAN align(1),
};
pub const USB_STOP_TRACKING_FOR_TIME_SYNC_INFORMATION = extern struct {
TimeTrackingHandle: ?HANDLE align(1),
};
pub const USB_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC_INFORMATION = extern struct {
TimeTrackingHandle: ?HANDLE align(1),
InputFrameNumber: u32 align(1),
InputMicroFrameNumber: u32 align(1),
QueryPerformanceCounterAtInputFrameOrMicroFrame: LARGE_INTEGER align(1),
QueryPerformanceCounterFrequency: LARGE_INTEGER align(1),
PredictedAccuracyInMicroSeconds: u32 align(1),
CurrentGenerationID: u32 align(1),
CurrentQueryPerformanceCounter: LARGE_INTEGER align(1),
CurrentHardwareFrameNumber: u32 align(1),
CurrentHardwareMicroFrameNumber: u32 align(1),
CurrentUSBFrameNumber: u32 align(1),
};
pub const USBFN_EVENT = enum(i32) {
Minimum = 0,
Attach = 1,
Reset = 2,
Detach = 3,
Suspend = 4,
Resume = 5,
SetupPacket = 6,
Configured = 7,
UnConfigured = 8,
PortType = 9,
BusTearDown = 10,
SetInterface = 11,
Maximum = 12,
};
pub const UsbfnEventMinimum = USBFN_EVENT.Minimum;
pub const UsbfnEventAttach = USBFN_EVENT.Attach;
pub const UsbfnEventReset = USBFN_EVENT.Reset;
pub const UsbfnEventDetach = USBFN_EVENT.Detach;
pub const UsbfnEventSuspend = USBFN_EVENT.Suspend;
pub const UsbfnEventResume = USBFN_EVENT.Resume;
pub const UsbfnEventSetupPacket = USBFN_EVENT.SetupPacket;
pub const UsbfnEventConfigured = USBFN_EVENT.Configured;
pub const UsbfnEventUnConfigured = USBFN_EVENT.UnConfigured;
pub const UsbfnEventPortType = USBFN_EVENT.PortType;
pub const UsbfnEventBusTearDown = USBFN_EVENT.BusTearDown;
pub const UsbfnEventSetInterface = USBFN_EVENT.SetInterface;
pub const UsbfnEventMaximum = USBFN_EVENT.Maximum;
pub const USBFN_PORT_TYPE = enum(i32) {
UnknownPort = 0,
StandardDownstreamPort = 1,
ChargingDownstreamPort = 2,
DedicatedChargingPort = 3,
InvalidDedicatedChargingPort = 4,
ProprietaryDedicatedChargingPort = 5,
PortTypeMaximum = 6,
};
pub const UsbfnUnknownPort = USBFN_PORT_TYPE.UnknownPort;
pub const UsbfnStandardDownstreamPort = USBFN_PORT_TYPE.StandardDownstreamPort;
pub const UsbfnChargingDownstreamPort = USBFN_PORT_TYPE.ChargingDownstreamPort;
pub const UsbfnDedicatedChargingPort = USBFN_PORT_TYPE.DedicatedChargingPort;
pub const UsbfnInvalidDedicatedChargingPort = USBFN_PORT_TYPE.InvalidDedicatedChargingPort;
pub const UsbfnProprietaryDedicatedChargingPort = USBFN_PORT_TYPE.ProprietaryDedicatedChargingPort;
pub const UsbfnPortTypeMaximum = USBFN_PORT_TYPE.PortTypeMaximum;
pub const USBFN_BUS_SPEED = enum(i32) {
Low = 0,
Full = 1,
High = 2,
Super = 3,
Maximum = 4,
};
pub const UsbfnBusSpeedLow = USBFN_BUS_SPEED.Low;
pub const UsbfnBusSpeedFull = USBFN_BUS_SPEED.Full;
pub const UsbfnBusSpeedHigh = USBFN_BUS_SPEED.High;
pub const UsbfnBusSpeedSuper = USBFN_BUS_SPEED.Super;
pub const UsbfnBusSpeedMaximum = USBFN_BUS_SPEED.Maximum;
pub const USBFN_DIRECTION = enum(i32) {
Minimum = 0,
In = 1,
Out = 2,
// Tx = 1, this enum value conflicts with In
// Rx = 2, this enum value conflicts with Out
Maximum = 3,
};
pub const UsbfnDirectionMinimum = USBFN_DIRECTION.Minimum;
pub const UsbfnDirectionIn = USBFN_DIRECTION.In;
pub const UsbfnDirectionOut = USBFN_DIRECTION.Out;
pub const UsbfnDirectionTx = USBFN_DIRECTION.In;
pub const UsbfnDirectionRx = USBFN_DIRECTION.Out;
pub const UsbfnDirectionMaximum = USBFN_DIRECTION.Maximum;
pub const USBFN_DEVICE_STATE = enum(i32) {
Minimum = 0,
Attached = 1,
Default = 2,
Detached = 3,
Addressed = 4,
Configured = 5,
Suspended = 6,
StateMaximum = 7,
};
pub const UsbfnDeviceStateMinimum = USBFN_DEVICE_STATE.Minimum;
pub const UsbfnDeviceStateAttached = USBFN_DEVICE_STATE.Attached;
pub const UsbfnDeviceStateDefault = USBFN_DEVICE_STATE.Default;
pub const UsbfnDeviceStateDetached = USBFN_DEVICE_STATE.Detached;
pub const UsbfnDeviceStateAddressed = USBFN_DEVICE_STATE.Addressed;
pub const UsbfnDeviceStateConfigured = USBFN_DEVICE_STATE.Configured;
pub const UsbfnDeviceStateSuspended = USBFN_DEVICE_STATE.Suspended;
pub const UsbfnDeviceStateStateMaximum = USBFN_DEVICE_STATE.StateMaximum;
pub const ALTERNATE_INTERFACE = extern struct {
InterfaceNumber: u16,
AlternateInterfaceNumber: u16,
};
pub const USBFN_NOTIFICATION = extern struct {
Event: USBFN_EVENT,
u: extern union {
BusSpeed: USBFN_BUS_SPEED,
SetupPacket: USB_DEFAULT_PIPE_SETUP_PACKET,
ConfigurationValue: u16,
PortType: USBFN_PORT_TYPE,
AlternateInterface: ALTERNATE_INTERFACE,
},
};
pub const USBFN_PIPE_INFORMATION = extern struct {
EpDesc: USB_ENDPOINT_DESCRIPTOR,
PipeId: u32,
};
pub const USBFN_CLASS_INTERFACE = extern struct {
InterfaceNumber: u8,
PipeCount: u8,
PipeArr: [16]USBFN_PIPE_INFORMATION,
};
pub const USBFN_CLASS_INFORMATION_PACKET = extern struct {
FullSpeedClassInterface: USBFN_CLASS_INTERFACE,
HighSpeedClassInterface: USBFN_CLASS_INTERFACE,
InterfaceName: [40]u16,
InterfaceGuid: [39]u16,
HasInterfaceGuid: BOOLEAN,
SuperSpeedClassInterface: USBFN_CLASS_INTERFACE,
};
pub const USBFN_CLASS_INTERFACE_EX = extern struct {
BaseInterfaceNumber: u8,
InterfaceCount: u8,
PipeCount: u8,
PipeArr: [16]USBFN_PIPE_INFORMATION,
};
pub const USBFN_CLASS_INFORMATION_PACKET_EX = extern struct {
FullSpeedClassInterfaceEx: USBFN_CLASS_INTERFACE_EX,
HighSpeedClassInterfaceEx: USBFN_CLASS_INTERFACE_EX,
SuperSpeedClassInterfaceEx: USBFN_CLASS_INTERFACE_EX,
InterfaceName: [40]u16,
InterfaceGuid: [39]u16,
HasInterfaceGuid: BOOLEAN,
};
pub const USBFN_INTERFACE_INFO = extern struct {
InterfaceNumber: u8,
Speed: USBFN_BUS_SPEED,
Size: u16,
InterfaceDescriptorSet: [1]u8,
};
pub const USBFN_USB_STRING = extern struct {
StringIndex: u8,
UsbString: [255]u16,
};
pub const USBFN_BUS_CONFIGURATION_INFO = extern struct {
ConfigurationName: [40]u16,
IsCurrent: BOOLEAN,
IsActive: BOOLEAN,
};
pub const DRV_VERSION = extern struct {
major: u32,
minor: u32,
internal: u32,
};
pub const IO_BLOCK = extern struct {
uOffset: u32,
uLength: u32,
pbyData: ?*u8,
uIndex: u32,
};
pub const IO_BLOCK_EX = extern struct {
uOffset: u32,
uLength: u32,
pbyData: ?*u8,
uIndex: u32,
bRequest: u8,
bmRequestType: u8,
fTransferDirectionIn: u8,
};
pub const CHANNEL_INFO = extern struct {
EventChannelSize: u32,
uReadDataAlignment: u32,
uWriteDataAlignment: u32,
};
pub const PIPE_TYPE = enum(i32) {
EVENT_PIPE = 0,
READ_DATA_PIPE = 1,
WRITE_DATA_PIPE = 2,
ALL_PIPE = 3,
};
pub const EVENT_PIPE = PIPE_TYPE.EVENT_PIPE;
pub const READ_DATA_PIPE = PIPE_TYPE.READ_DATA_PIPE;
pub const WRITE_DATA_PIPE = PIPE_TYPE.WRITE_DATA_PIPE;
pub const ALL_PIPE = PIPE_TYPE.ALL_PIPE;
pub const USBSCAN_GET_DESCRIPTOR = extern struct {
DescriptorType: u8,
Index: u8,
LanguageId: u16,
};
pub const DEVICE_DESCRIPTOR = extern struct {
usVendorId: u16,
usProductId: u16,
usBcdDevice: u16,
usLanguageId: u16,
};
pub const RAW_PIPE_TYPE = enum(i32) {
CONTROL = 0,
ISOCHRONOUS = 1,
BULK = 2,
INTERRUPT = 3,
};
pub const USBSCAN_PIPE_CONTROL = RAW_PIPE_TYPE.CONTROL;
pub const USBSCAN_PIPE_ISOCHRONOUS = RAW_PIPE_TYPE.ISOCHRONOUS;
pub const USBSCAN_PIPE_BULK = RAW_PIPE_TYPE.BULK;
pub const USBSCAN_PIPE_INTERRUPT = RAW_PIPE_TYPE.INTERRUPT;
pub const USBSCAN_PIPE_INFORMATION = extern struct {
MaximumPacketSize: u16,
EndpointAddress: u8,
Interval: u8,
PipeType: RAW_PIPE_TYPE,
};
pub const USBSCAN_PIPE_CONFIGURATION = extern struct {
NumberOfPipes: u32,
PipeInfo: [8]USBSCAN_PIPE_INFORMATION,
};
pub const USBSCAN_TIMEOUT = extern struct {
TimeoutRead: u32,
TimeoutWrite: u32,
TimeoutEvent: u32,
};
//--------------------------------------------------------------------------------
// Section: Functions (34)
//--------------------------------------------------------------------------------
pub extern "winusb" fn WinUsb_Initialize(
DeviceHandle: ?HANDLE,
InterfaceHandle: ?*?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;
pub extern "winusb" fn WinUsb_Free(
InterfaceHandle: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;
pub extern "winusb" fn WinUsb_GetAssociatedInterface(
InterfaceHandle: ?*anyopaque,
AssociatedInterfaceIndex: u8,
AssociatedInterfaceHandle: ?*?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;
pub extern "winusb" fn WinUsb_GetDescriptor(
InterfaceHandle: ?*anyopaque,
DescriptorType: u8,
Index: u8,
LanguageID: u16,
// TODO: what to do with BytesParamIndex 5?
Buffer: ?*u8,
BufferLength: u32,
LengthTransferred: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;
pub extern "winusb" fn WinUsb_QueryInterfaceSettings(
InterfaceHandle: ?*anyopaque,
AlternateInterfaceNumber: u8,
UsbAltInterfaceDescriptor: ?*USB_INTERFACE_DESCRIPTOR,
) callconv(@import("std").os.windows.WINAPI) BOOL;
pub extern "winusb" fn WinUsb_QueryDeviceInformation(
InterfaceHandle: ?*anyopaque,
InformationType: u32,
BufferLength: ?*u32,
// TODO: what to do with BytesParamIndex 2?
Buffer: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;
pub extern "winusb" fn WinUsb_SetCurrentAlternateSetting(
InterfaceHandle: ?*anyopaque,
SettingNumber: u8,
) callconv(@import("std").os.windows.WINAPI) BOOL;
pub extern "winusb" fn WinUsb_GetCurrentAlternateSetting(
InterfaceHandle: ?*anyopaque,
SettingNumber: ?*u8,
) callconv(@import("std").os.windows.WINAPI) BOOL;
pub extern "winusb" fn WinUsb_QueryPipe(
InterfaceHandle: ?*anyopaque,
AlternateInterfaceNumber: u8,
PipeIndex: u8,
PipeInformation: ?*WINUSB_PIPE_INFORMATION,
) callconv(@import("std").os.windows.WINAPI) BOOL;
pub extern "winusb" fn WinUsb_QueryPipeEx(
InterfaceHandle: ?*anyopaque,
AlternateSettingNumber: u8,
PipeIndex: u8,
PipeInformationEx: ?*WINUSB_PIPE_INFORMATION_EX,
) callconv(@import("std").os.windows.WINAPI) BOOL;
pub extern "winusb" fn WinUsb_SetPipePolicy(
InterfaceHandle: ?*anyopaque,
PipeID: u8,
PolicyType: u32,
ValueLength: u32,
// TODO: what to do with BytesParamIndex 3?
Value: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;
pub extern "winusb" fn WinUsb_GetPipePolicy(
InterfaceHandle: ?*anyopaque,
PipeID: u8,
PolicyType: u32,
ValueLength: ?*u32,
// TODO: what to do with BytesParamIndex 3?
Value: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;
pub extern "winusb" fn WinUsb_ReadPipe(
InterfaceHandle: ?*anyopaque,
PipeID: u8,
// TODO: what to do with BytesParamIndex 3?
Buffer: ?*u8,
BufferLength: u32,
LengthTransferred: ?*u32,
Overlapped: ?*OVERLAPPED,
) callconv(@import("std").os.windows.WINAPI) BOOL;
pub extern "winusb" fn WinUsb_WritePipe(
InterfaceHandle: ?*anyopaque,
PipeID: u8,
// TODO: what to do with BytesParamIndex 3?
Buffer: ?*u8,
BufferLength: u32,
LengthTransferred: ?*u32,
Overlapped: ?*OVERLAPPED,
) callconv(@import("std").os.windows.WINAPI) BOOL;
pub extern "winusb" fn WinUsb_ControlTransfer(
InterfaceHandle: ?*anyopaque,
SetupPacket: WINUSB_SETUP_PACKET,
// TODO: what to do with BytesParamIndex 3?
Buffer: ?*u8,
BufferLength: u32,
LengthTransferred: ?*u32,
Overlapped: ?*OVERLAPPED,
) callconv(@import("std").os.windows.WINAPI) BOOL;
pub extern "winusb" fn WinUsb_ResetPipe(
InterfaceHandle: ?*anyopaque,
PipeID: u8,
) callconv(@import("std").os.windows.WINAPI) BOOL;
pub extern "winusb" fn WinUsb_AbortPipe(
InterfaceHandle: ?*anyopaque,
PipeID: u8,
) callconv(@import("std").os.windows.WINAPI) BOOL;
pub extern "winusb" fn WinUsb_FlushPipe(
InterfaceHandle: ?*anyopaque,
PipeID: u8,
) callconv(@import("std").os.windows.WINAPI) BOOL;
pub extern "winusb" fn WinUsb_SetPowerPolicy(
InterfaceHandle: ?*anyopaque,
PolicyType: u32,
ValueLength: u32,
// TODO: what to do with BytesParamIndex 2?
Value: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;
pub extern "winusb" fn WinUsb_GetPowerPolicy(
InterfaceHandle: ?*anyopaque,
PolicyType: u32,
ValueLength: ?*u32,
// TODO: what to do with BytesParamIndex 2?
Value: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;
pub extern "winusb" fn WinUsb_GetOverlappedResult(
InterfaceHandle: ?*anyopaque,
lpOverlapped: ?*OVERLAPPED,
lpNumberOfBytesTransferred: ?*u32,
bWait: BOOL,
) callconv(@import("std").os.windows.WINAPI) BOOL;
pub extern "winusb" fn WinUsb_ParseConfigurationDescriptor(
ConfigurationDescriptor: ?*USB_CONFIGURATION_DESCRIPTOR,
StartPosition: ?*anyopaque,
InterfaceNumber: i32,
AlternateSetting: i32,
InterfaceClass: i32,
InterfaceSubClass: i32,
InterfaceProtocol: i32,
) callconv(@import("std").os.windows.WINAPI) ?*USB_INTERFACE_DESCRIPTOR;
pub extern "winusb" fn WinUsb_ParseDescriptors(
// TODO: what to do with BytesParamIndex 1?
DescriptorBuffer: ?*anyopaque,
TotalLength: u32,
StartPosition: ?*anyopaque,
DescriptorType: i32,
) callconv(@import("std").os.windows.WINAPI) ?*USB_COMMON_DESCRIPTOR;
// TODO: this type is limited to platform 'windows8.1'
pub extern "winusb" fn WinUsb_GetCurrentFrameNumber(
InterfaceHandle: ?*anyopaque,
CurrentFrameNumber: ?*u32,
TimeStamp: ?*LARGE_INTEGER,
) callconv(@import("std").os.windows.WINAPI) BOOL;
// TODO: this type is limited to platform 'windows8.1'
pub extern "winusb" fn WinUsb_GetAdjustedFrameNumber(
CurrentFrameNumber: ?*u32,
TimeStamp: LARGE_INTEGER,
) callconv(@import("std").os.windows.WINAPI) BOOL;
// TODO: this type is limited to platform 'windows8.1'
pub extern "winusb" fn WinUsb_RegisterIsochBuffer(
InterfaceHandle: ?*anyopaque,
PipeID: u8,
// TODO: what to do with BytesParamIndex 3?
Buffer: ?*u8,
BufferLength: u32,
IsochBufferHandle: ?*?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;
// TODO: this type is limited to platform 'windows8.1'
pub extern "winusb" fn WinUsb_UnregisterIsochBuffer(
IsochBufferHandle: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;
// TODO: this type is limited to platform 'windows8.1'
pub extern "winusb" fn WinUsb_WriteIsochPipe(
BufferHandle: ?*anyopaque,
Offset: u32,
Length: u32,
FrameNumber: ?*u32,
Overlapped: ?*OVERLAPPED,
) callconv(@import("std").os.windows.WINAPI) BOOL;
// TODO: this type is limited to platform 'windows8.1'
pub extern "winusb" fn WinUsb_ReadIsochPipe(
BufferHandle: ?*anyopaque,
Offset: u32,
Length: u32,
FrameNumber: ?*u32,
NumberOfPackets: u32,
IsoPacketDescriptors: [*]USBD_ISO_PACKET_DESCRIPTOR,
Overlapped: ?*OVERLAPPED,
) callconv(@import("std").os.windows.WINAPI) BOOL;
// TODO: this type is limited to platform 'windows8.1'
pub extern "winusb" fn WinUsb_WriteIsochPipeAsap(
BufferHandle: ?*anyopaque,
Offset: u32,
Length: u32,
ContinueStream: BOOL,
Overlapped: ?*OVERLAPPED,
) callconv(@import("std").os.windows.WINAPI) BOOL;
// TODO: this type is limited to platform 'windows8.1'
pub extern "winusb" fn WinUsb_ReadIsochPipeAsap(
BufferHandle: ?*anyopaque,
Offset: u32,
Length: u32,
ContinueStream: BOOL,
NumberOfPackets: u32,
IsoPacketDescriptors: [*]USBD_ISO_PACKET_DESCRIPTOR,
Overlapped: ?*OVERLAPPED,
) callconv(@import("std").os.windows.WINAPI) BOOL;
// TODO: this type is limited to platform 'windows10.0.10240'
pub extern "winusb" fn WinUsb_StartTrackingForTimeSync(
InterfaceHandle: ?*anyopaque,
StartTrackingInfo: ?*USB_START_TRACKING_FOR_TIME_SYNC_INFORMATION,
) callconv(@import("std").os.windows.WINAPI) BOOL;
// TODO: this type is limited to platform 'windows10.0.10240'
pub extern "winusb" fn WinUsb_GetCurrentFrameNumberAndQpc(
InterfaceHandle: ?*anyopaque,
FrameQpcInfo: ?*USB_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC_INFORMATION,
) callconv(@import("std").os.windows.WINAPI) BOOL;
// TODO: this type is limited to platform 'windows10.0.10240'
pub extern "winusb" fn WinUsb_StopTrackingForTimeSync(
InterfaceHandle: ?*anyopaque,
StopTrackingInfo: ?*USB_STOP_TRACKING_FOR_TIME_SYNC_INFORMATION,
) callconv(@import("std").os.windows.WINAPI) BOOL;
//--------------------------------------------------------------------------------
// Section: Unicode Aliases (0)
//--------------------------------------------------------------------------------
const thismodule = @This();
pub usingnamespace switch (@import("../zig.zig").unicode_mode) {
.ansi => struct {
},
.wide => struct {
},
.unspecified => if (@import("builtin").is_test) struct {
} else struct {
},
};
//--------------------------------------------------------------------------------
// Section: Imports (6)
//--------------------------------------------------------------------------------
const Guid = @import("../zig.zig").Guid;
const BOOL = @import("../foundation.zig").BOOL;
const BOOLEAN = @import("../foundation.zig").BOOLEAN;
const HANDLE = @import("../foundation.zig").HANDLE;
const LARGE_INTEGER = @import("../foundation.zig").LARGE_INTEGER;
const OVERLAPPED = @import("../system/io.zig").OVERLAPPED;
test {
// The following '_ = <FuncPtrType>' lines are a workaround for https://github.com/ziglang/zig/issues/4476
if (@hasDecl(@This(), "USB_IDLE_CALLBACK")) { _ = USB_IDLE_CALLBACK; }
@setEvalBranchQuota(
comptime @import("std").meta.declarations(@This()).len * 3
);
// reference all the pub declarations
if (!@import("builtin").is_test) return;
inline for (comptime @import("std").meta.declarations(@This())) |decl| {
_ = @field(@This(), decl.name);
}
}