// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
// All files in the project carrying such notice may not be copied, modified, or distributed
// except according to those terms.
//! USB Definitions.
use shared::minwindef::{UCHAR, ULONG, USHORT};
use shared::usbspec::{
    PUSB_CONFIGURATION_DESCRIPTOR, USB_DEVICE_DESCRIPTOR, USB_ENDPOINT_DIRECTION_MASK,
};
use um::winnt::{LONG, PVOID, WCHAR};
pub type PRIP = PVOID;
pub type PMDL = PVOID;
pub const USBDI_VERSION: ULONG = 0x00000600;
pub const USB_PORTATTR_NO_CONNECTOR: ULONG = 0x00000001;
pub const USB_PORTATTR_SHARED_USB2: ULONG = 0x00000002;
pub const USB_PORTATTR_MINI_CONNECTOR: ULONG = 0x00000004;
pub const USB_PORTATTR_OEM_CONNECTOR: ULONG = 0x00000008;
pub const USB_PORTATTR_OWNED_BY_CC: ULONG = 0x01000000;
pub const USB_PORTATTR_NO_OVERCURRENT_UI: ULONG = 0x02000000;
ENUM!{enum USB_CONTROLLER_FLAVOR {
    USB_HcGeneric = 0,
    OHCI_Generic = 100,
    OHCI_Hydra,
    OHCI_NEC,
    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_DEFAULT_DEVICE_ADDRESS: UCHAR = 0;
pub const USB_DEFAULT_ENDPOINT_ADDRESS: UCHAR = 0;
pub const USB_DEFAULT_MAX_PACKET: USHORT = 64;
pub const URB_FUNCTION_SELECT_CONFIGURATION: USHORT = 0x0000;
pub const URB_FUNCTION_SELECT_INTERFACE: USHORT = 0x0001;
pub const URB_FUNCTION_ABORT_PIPE: USHORT = 0x0002;
pub const URB_FUNCTION_TAKE_FRAME_LENGTH_CONTROL: USHORT = 0x0003;
pub const URB_FUNCTION_RELEASE_FRAME_LENGTH_CONTROL: USHORT = 0x0004;
pub const URB_FUNCTION_GET_FRAME_LENGTH: USHORT = 0x0005;
pub const URB_FUNCTION_SET_FRAME_LENGTH: USHORT = 0x0006;
pub const URB_FUNCTION_GET_CURRENT_FRAME_NUMBER: USHORT = 0x0007;
pub const URB_FUNCTION_CONTROL_TRANSFER: USHORT = 0x0008;
pub const URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER: USHORT = 0x0009;
pub const URB_FUNCTION_ISOCH_TRANSFER: USHORT = 0x000A;
pub const URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE: USHORT = 0x000B;
pub const URB_FUNCTION_SET_DESCRIPTOR_TO_DEVICE: USHORT = 0x000C;
pub const URB_FUNCTION_SET_FEATURE_TO_DEVICE: USHORT = 0x000D;
pub const URB_FUNCTION_SET_FEATURE_TO_INTERFACE: USHORT = 0x000E;
pub const URB_FUNCTION_SET_FEATURE_TO_ENDPOINT: USHORT = 0x000F;
pub const URB_FUNCTION_CLEAR_FEATURE_TO_DEVICE: USHORT = 0x0010;
pub const URB_FUNCTION_CLEAR_FEATURE_TO_INTERFACE: USHORT = 0x0011;
pub const URB_FUNCTION_CLEAR_FEATURE_TO_ENDPOINT: USHORT = 0x0012;
pub const URB_FUNCTION_GET_STATUS_FROM_DEVICE: USHORT = 0x0013;
pub const URB_FUNCTION_GET_STATUS_FROM_INTERFACE: USHORT = 0x0014;
pub const URB_FUNCTION_GET_STATUS_FROM_ENDPOINT: USHORT = 0x0015;
pub const URB_FUNCTION_RESERVED_0X0016: USHORT = 0x0016;
pub const URB_FUNCTION_VENDOR_DEVICE: USHORT = 0x0017;
pub const URB_FUNCTION_VENDOR_INTERFACE: USHORT = 0x0018;
pub const URB_FUNCTION_VENDOR_ENDPOINT: USHORT = 0x0019;
pub const URB_FUNCTION_CLASS_DEVICE: USHORT = 0x001A;
pub const URB_FUNCTION_CLASS_INTERFACE: USHORT = 0x001B;
pub const URB_FUNCTION_CLASS_ENDPOINT: USHORT = 0x001C;
pub const URB_FUNCTION_RESERVE_0X001D: USHORT = 0x001D;
pub const URB_FUNCTION_SYNC_RESET_PIPE_AND_CLEAR_STALL: USHORT = 0x001E;
pub const URB_FUNCTION_CLASS_OTHER: USHORT = 0x001F;
pub const URB_FUNCTION_VENDOR_OTHER: USHORT = 0x0020;
pub const URB_FUNCTION_GET_STATUS_FROM_OTHER: USHORT = 0x0021;
pub const URB_FUNCTION_CLEAR_FEATURE_TO_OTHER: USHORT = 0x0022;
pub const URB_FUNCTION_SET_FEATURE_TO_OTHER: USHORT = 0x0023;
pub const URB_FUNCTION_GET_DESCRIPTOR_FROM_ENDPOINT: USHORT = 0x0024;
pub const URB_FUNCTION_SET_DESCRIPTOR_TO_ENDPOINT: USHORT = 0x0025;
pub const URB_FUNCTION_GET_CONFIGURATION: USHORT = 0x0026;
pub const URB_FUNCTION_GET_INTERFACE: USHORT = 0x0027;
pub const URB_FUNCTION_GET_DESCRIPTOR_FROM_INTERFACE: USHORT = 0x0028;
pub const URB_FUNCTION_SET_DESCRIPTOR_TO_INTERFACE: USHORT = 0x0029;
pub const URB_FUNCTION_GET_MS_FEATURE_DESCRIPTOR: USHORT = 0x002A;
pub const URB_FUNCTION_SYNC_RESET_PIPE: USHORT = 0x0030;
pub const URB_FUNCTION_SYNC_CLEAR_STALL: USHORT = 0x0031;
pub const URB_FUNCTION_CONTROL_TRANSFER_EX: USHORT = 0x0032;
pub const URB_FUNCTION_RESERVE_0X0033: USHORT = 0x0033;
pub const URB_FUNCTION_RESERVE_0X0034: USHORT = 0x0034;
pub const URB_FUNCTION_OPEN_STATIC_STREAMS: USHORT = 0x0035;
pub const URB_FUNCTION_CLOSE_STATIC_STREAMS: USHORT = 0x0036;
pub const URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER_USING_CHAINED_MDL: USHORT = 0x0037;
pub const URB_FUNCTION_ISOCH_TRANSFER_USING_CHAINED_MDL: USHORT = 0x0038;
pub const URB_FUNCTION_RESERVE_0X002B: USHORT = 0x002B;
pub const URB_FUNCTION_RESERVE_0X002C: USHORT = 0x002C;
pub const URB_FUNCTION_RESERVE_0X002D: USHORT = 0x002D;
pub const URB_FUNCTION_RESERVE_0X002E: USHORT = 0x002E;
pub const URB_FUNCTION_RESERVE_0X002F: USHORT = 0x002F;
pub const URB_FUNCTION_RESET_PIPE: USHORT = URB_FUNCTION_SYNC_RESET_PIPE_AND_CLEAR_STALL;
pub const USBD_SHORT_TRANSFER_OK: ULONG = 0x00000002;
pub const USBD_START_ISO_TRANSFER_ASAP: ULONG = 0x00000004;
pub const USBD_DEFAULT_PIPE_TRANSFER: ULONG = 0x00000008;
pub const USBD_TRANSFER_DIRECTION_OUT: ULONG = 0;
pub const USBD_TRANSFER_DIRECTION_IN: ULONG = 1;
pub const USBD_TRANSFER_DIRECTION: ULONG = USBD_TRANSFER_DIRECTION_IN;
#[inline]
pub fn USBD_TRANSFER_DIRECTION_FLAG(flags: ULONG) -> ULONG {
    flags & USBD_TRANSFER_DIRECTION
}
pub const VALID_TRANSFER_FLAGS_MASK: ULONG = USBD_SHORT_TRANSFER_OK | USBD_TRANSFER_DIRECTION
    | USBD_START_ISO_TRANSFER_ASAP | USBD_DEFAULT_PIPE_TRANSFER;
pub const USBD_ISO_START_FRAME_RANGE: ULONG = 1024;
pub type USBD_STATUS = LONG;
#[inline]
pub fn USBD_SUCCESS(Status: USBD_STATUS) -> bool {
    Status >= 0
}
#[inline]
pub fn USBD_PENDING(Status: ULONG) -> bool {
    (Status >> 30) == 1
}
pub const USBD_STATUS_SUCCESS: USBD_STATUS = 0x00000000;
pub const USBD_STATUS_PORT_OPERATION_PENDING: USBD_STATUS = 0x00000001;
pub const USBD_STATUS_PENDING: USBD_STATUS = 0x40000000;
pub const USBD_STATUS_CRC: USBD_STATUS = 0xC0000001;
pub const USBD_STATUS_BTSTUFF: USBD_STATUS = 0xC0000002;
pub const USBD_STATUS_DATA_TOGGLE_MISMATCH: USBD_STATUS = 0xC0000003;
pub const USBD_STATUS_STALL_PID: USBD_STATUS = 0xC0000004;
pub const USBD_STATUS_DEV_NOT_RESPONDING: USBD_STATUS = 0xC0000005;
pub const USBD_STATUS_PID_CHECK_FAILURE: USBD_STATUS = 0xC0000006;
pub const USBD_STATUS_UNEXPECTED_PID: USBD_STATUS = 0xC0000007;
pub const USBD_STATUS_DATA_OVERRUN: USBD_STATUS = 0xC0000008;
pub const USBD_STATUS_DATA_UNDERRUN: USBD_STATUS = 0xC0000009;
pub const USBD_STATUS_RESERVED1: USBD_STATUS = 0xC000000A;
pub const USBD_STATUS_RESERVED2: USBD_STATUS = 0xC000000B;
pub const USBD_STATUS_BUFFER_OVERRUN: USBD_STATUS = 0xC000000C;
pub const USBD_STATUS_BUFFER_UNDERRUN: USBD_STATUS = 0xC000000D;
pub const USBD_STATUS_NOT_ACCESSED: USBD_STATUS = 0xC000000F;
pub const USBD_STATUS_FIFO: USBD_STATUS = 0xC0000010;
pub const USBD_STATUS_XACT_ERROR: USBD_STATUS = 0xC0000011;
pub const USBD_STATUS_BABBLE_DETECTED: USBD_STATUS = 0xC0000012;
pub const USBD_STATUS_DATA_BUFFER_ERROR: USBD_STATUS = 0xC0000013;
pub const USBD_STATUS_NO_PING_RESPONSE: USBD_STATUS = 0xC0000014;
pub const USBD_STATUS_INVALID_STREAM_TYPE: USBD_STATUS = 0xC0000015;
pub const USBD_STATUS_INVALID_STREAM_ID: USBD_STATUS = 0xC0000016;
pub const USBD_STATUS_ENDPOINT_HALTED: USBD_STATUS = 0xC0000030;
pub const USBD_STATUS_INVALID_URB_FUNCTION: USBD_STATUS = 0x80000200;
pub const USBD_STATUS_INVALID_PARAMETER: USBD_STATUS = 0x80000300;
pub const USBD_STATUS_ERROR_BUSY: USBD_STATUS = 0x80000400;
pub const USBD_STATUS_INVALID_PIPE_HANDLE: USBD_STATUS = 0x80000600;
pub const USBD_STATUS_NO_BANDWIDTH: USBD_STATUS = 0x80000700;
pub const USBD_STATUS_INTERNAL_HC_ERROR: USBD_STATUS = 0x80000800;
pub const USBD_STATUS_ERROR_SHORT_TRANSFER: USBD_STATUS = 0x80000900;
pub const USBD_STATUS_BAD_START_FRAME: USBD_STATUS = 0xC0000A00;
pub const USBD_STATUS_ISOCH_REQUEST_FAILED: USBD_STATUS = 0xC0000B00;
pub const USBD_STATUS_FRAME_CONTROL_OWNED: USBD_STATUS = 0xC0000C00;
pub const USBD_STATUS_FRAME_CONTROL_NOT_OWNED: USBD_STATUS = 0xC0000D00;
pub const USBD_STATUS_NOT_SUPPORTED: USBD_STATUS = 0xC0000E00;
pub const USBD_STATUS_INAVLID_CONFIGURATION_DESCRIPTOR: USBD_STATUS = 0xC0000F00;
pub const USBD_STATUS_INVALID_CONFIGURATION_DESCRIPTOR: USBD_STATUS = 0xC0000F00;
pub const USBD_STATUS_INSUFFICIENT_RESOURCES: USBD_STATUS = 0xC0001000;
pub const USBD_STATUS_SET_CONFIG_FAILED: USBD_STATUS = 0xC0002000;
pub const USBD_STATUS_BUFFER_TOO_SMALL: USBD_STATUS = 0xC0003000;
pub const USBD_STATUS_INTERFACE_NOT_FOUND: USBD_STATUS = 0xC0004000;
pub const USBD_STATUS_INAVLID_PIPE_FLAGS: USBD_STATUS = 0xC0005000;
pub const USBD_STATUS_TIMEOUT: USBD_STATUS = 0xC0006000;
pub const USBD_STATUS_DEVICE_GONE: USBD_STATUS = 0xC0007000;
pub const USBD_STATUS_STATUS_NOT_MAPPED: USBD_STATUS = 0xC0008000;
pub const USBD_STATUS_HUB_INTERNAL_ERROR: USBD_STATUS = 0xC0009000;
pub const USBD_STATUS_CANCELED: USBD_STATUS = 0xC0010000;
pub const USBD_STATUS_ISO_NOT_ACCESSED_BY_HW: USBD_STATUS = 0xC0020000;
pub const USBD_STATUS_ISO_TD_ERROR: USBD_STATUS = 0xC0030000;
pub const USBD_STATUS_ISO_NA_LATE_USBPORT: USBD_STATUS = 0xC0040000;
pub const USBD_STATUS_ISO_NOT_ACCESSED_LATE: USBD_STATUS = 0xC0050000;
pub const USBD_STATUS_BAD_DESCRIPTOR: USBD_STATUS = 0xC0100000;
pub const USBD_STATUS_BAD_DESCRIPTOR_BLEN: USBD_STATUS = 0xC0100001;
pub const USBD_STATUS_BAD_DESCRIPTOR_TYPE: USBD_STATUS = 0xC0100002;
pub const USBD_STATUS_BAD_INTERFACE_DESCRIPTOR: USBD_STATUS = 0xC0100003;
pub const USBD_STATUS_BAD_ENDPOINT_DESCRIPTOR: USBD_STATUS = 0xC0100004;
pub const USBD_STATUS_BAD_INTERFACE_ASSOC_DESCRIPTOR: USBD_STATUS = 0xC0100005;
pub const USBD_STATUS_BAD_CONFIG_DESC_LENGTH: USBD_STATUS = 0xC0100006;
pub const USBD_STATUS_BAD_NUMBER_OF_INTERFACES: USBD_STATUS = 0xC0100007;
pub const USBD_STATUS_BAD_NUMBER_OF_ENDPOINTS: USBD_STATUS = 0xC0100008;
pub const USBD_STATUS_BAD_ENDPOINT_ADDRESS: USBD_STATUS = 0xC0100009;
pub type USBD_PIPE_HANDLE = PVOID;
pub type USBD_CONFIGURATION_HANDLE = PVOID;
pub type USBD_INTERFACE_HANDLE = PVOID;
pub const USBD_DEFAULT_MAXIMUM_TRANSFER_SIZE: ULONG = 0xFFFFFFFF;
STRUCT!{struct USBD_VERSION_INFORMATION {
    USBDI_Version: ULONG,
    Supported_USB_Version: ULONG,
}}
pub type PUSBD_VERSION_INFORMATION = *mut USBD_VERSION_INFORMATION;
ENUM!{enum USBD_PIPE_TYPE {
    UsbdPipeTypeControl,
    UsbdPipeTypeIsochronous,
    UsbdPipeTypeBulk,
    UsbdPipeTypeInterrupt,
}}
#[inline]
pub fn USBD_PIPE_DIRECTION_IN(pipeInformation: &USBD_PIPE_INFORMATION) -> UCHAR {
    pipeInformation.EndpointAddress & USB_ENDPOINT_DIRECTION_MASK
}
STRUCT!{struct USBD_DEVICE_INFORMATION {
    OffsetNext: ULONG,
    UsbdDeviceHandle: PVOID,
    DeviceDescriptor: USB_DEVICE_DESCRIPTOR,
}}
pub type PUSBD_DEVICE_INFORMATION = *mut USBD_DEVICE_INFORMATION;
STRUCT!{struct USBD_PIPE_INFORMATION {
    MaximumPacketSize: USHORT,
    EndpointAddress: UCHAR,
    Interval: UCHAR,
    PipeType: USBD_PIPE_TYPE,
    PipeHandle: USBD_PIPE_HANDLE,
    MaximumTransferSize: ULONG,
    PipeFlags: ULONG,
}}
pub type PUSBD_PIPE_INFORMATION = *mut USBD_PIPE_INFORMATION;
pub const USBD_PF_CHANGE_MAX_PACKET: ULONG = 0x00000001;
pub const USBD_PF_SHORT_PACKET_OPT: ULONG = 0x00000002;
pub const USBD_PF_ENABLE_RT_THREAD_ACCESS: ULONG = 0x00000004;
pub const USBD_PF_MAP_ADD_TRANSFERS: ULONG = 0x00000008;
pub const USBD_PF_VALID_MASK: ULONG = USBD_PF_CHANGE_MAX_PACKET | USBD_PF_SHORT_PACKET_OPT
    | USBD_PF_ENABLE_RT_THREAD_ACCESS | USBD_PF_MAP_ADD_TRANSFERS;
STRUCT!{struct USBD_INTERFACE_INFORMATION {
    Length: USHORT,
    InterfaceNumber: UCHAR,
    AlternateSetting: UCHAR,
    Class: UCHAR,
    SubClass: UCHAR,
    Protocol: UCHAR,
    Reserved: UCHAR,
    InterfaceHandle: USBD_INTERFACE_HANDLE,
    NumberOfPipes: ULONG,
    Pipes: [USBD_PIPE_INFORMATION; 1],
}}
pub type PUSBD_INTERFACE_INFORMATION = *mut USBD_INTERFACE_INFORMATION;
STRUCT!{struct URB_HCD_AREA {
    Reserved8: [PVOID; 8],
}}
STRUCT!{struct URB_HEADER {
    Length: USHORT,
    Function: USHORT,
    Status: USBD_STATUS,
    UsbdDeviceHandle: PVOID,
    UsbdFlags: ULONG,
}}
STRUCT!{struct URB_SELECT_INTERFACE {
    Hdr: URB_HEADER,
    ConfigurationHandle: USBD_CONFIGURATION_HANDLE,
    Interface: USBD_INTERFACE_INFORMATION,
}}
STRUCT!{struct URB_SELECT_CONFIGURATION {
    Hdr: URB_HEADER,
    ConfigurationDescriptor: PUSB_CONFIGURATION_DESCRIPTOR,
    ConfigurationHandle: USBD_CONFIGURATION_HANDLE,
    Interface: USBD_INTERFACE_INFORMATION,
}}
STRUCT!{struct URB_PIPE_REQUEST {
    Hdr: URB_HEADER,
    PipeHandle: USBD_PIPE_HANDLE,
    Reserved: ULONG,
}}
STRUCT!{struct URB_FRAME_LENGTH_CONTROL {
    Hdr: URB_HEADER,
}}
STRUCT!{struct URB_GET_FRAME_LENGTH {
    Hdr: URB_HEADER,
    FrameLength: ULONG,
    FrameNumber: ULONG,
}}
STRUCT!{struct URB_SET_FRAME_LENGTH {
    Hdr: URB_HEADER,
    FrameLengthDelta: LONG,
}}
STRUCT!{struct URB_GET_CURRENT_FRAME_NUMBER {
    Hdr: URB_HEADER,
    FrameNumber: ULONG,
}}
STRUCT!{struct URB_CONTROL_DESCRIPTOR_REQUEST {
    Hdr: URB_HEADER,
    Reserved: PVOID,
    Reserved0: ULONG,
    TransferBufferLength: ULONG,
    TransferBuffer: PVOID,
    TransferBufferMDL: PMDL,
    UrbLink: *mut URB,
    hca: URB_HCD_AREA,
    Reserved1: USHORT,
    Index: UCHAR,
    DescriptorType: UCHAR,
    LanguageId: USHORT,
    Reserved2: USHORT,
}}
STRUCT!{struct URB_CONTROL_GET_STATUS_REQUEST {
    Hdr: URB_HEADER,
    Reserved: PVOID,
    Reserved0: ULONG,
    TransferBufferLength: ULONG,
    TransferBuffer: PVOID,
    TransferBufferMDL: PMDL,
    UrbLink: *mut URB,
    hca: URB_HCD_AREA,
    Reserved1: [UCHAR; 4],
    Index: USHORT,
    Reserved2: USHORT,
}}
STRUCT!{struct URB_CONTROL_FEATURE_REQUEST {
    Hdr: URB_HEADER,
    Reserved: PVOID,
    Reserved2: ULONG,
    Reserved3: ULONG,
    Reserved4: PVOID,
    Reserved5: PMDL,
    UrbLink: *mut URB,
    hca: URB_HCD_AREA,
    Reserved0: USHORT,
    FeatureSelector: USHORT,
    Index: USHORT,
    Reserved1: USHORT,
}}
STRUCT!{struct URB_CONTROL_VENDOR_OR_CLASS_REQUEST {
    Hdr: URB_HEADER,
    Reserved: PVOID,
    TransferFlags: ULONG,
    TransferBufferLength: ULONG,
    TransferBuffer: PVOID,
    TransferBufferMDL: PMDL,
    UrbLink: *mut URB,
    hca: URB_HCD_AREA,
    RequestTypeReservedBits: UCHAR,
    Request: UCHAR,
    Value: USHORT,
    Index: USHORT,
    Reserved1: USHORT,
}}
STRUCT!{struct URB_CONTROL_GET_INTERFACE_REQUEST {
    Hdr: URB_HEADER,
    Reserved: PVOID,
    Reserved0: ULONG,
    TransferBufferLength: ULONG,
    TransferBuffer: PVOID,
    TransferBufferMDL: PMDL,
    UrbLink: *mut URB,
    hca: URB_HCD_AREA,
    Reserved1: [UCHAR; 4],
    Interface: USHORT,
    Reserved2: USHORT,
}}
STRUCT!{struct URB_CONTROL_GET_CONFIGURATION_REQUEST {
    Hdr: URB_HEADER,
    Reserved: PVOID,
    Reserved0: ULONG,
    TransferBufferLength: ULONG,
    TransferBuffer: PVOID,
    TransferBufferMDL: PMDL,
    UrbLink: *mut URB,
    hca: URB_HCD_AREA,
    Reserved1: [UCHAR; 8],
}}
pub const OS_STRING_DESCRIPTOR_INDEX: UCHAR = 0xEE;
pub const MS_GENRE_DESCRIPTOR_INDEX: USHORT = 0x0001;
pub const MS_POWER_DESCRIPTOR_INDEX: USHORT = 0x0002;
pub const MS_OS_STRING_SIGNATURE: &'static str = "MSFT100";
pub const MS_OS_FLAGS_CONTAINERID: UCHAR = 0x02;
UNION!{union OS_STRING_u {
    [u8; 1],
    bPad bPad_mut: UCHAR,
    bFlags bFlags_mut: UCHAR,
}}
STRUCT!{struct OS_STRING {
    bLength: UCHAR,
    bDescriptorType: UCHAR,
    MicrosoftString: [WCHAR; 7],
    bVendorCode: UCHAR,
    u: OS_STRING_u,
}}
pub type POS_STRING = *mut OS_STRING;
STRUCT!{struct URB_OS_FEATURE_DESCRIPTOR_REQUEST {
    Hdr: URB_HEADER,
    Reserved: PVOID,
    Reserved0: ULONG,
    TransferBufferLength: ULONG,
    TransferBuffer: PVOID,
    TransferBufferMDL: PMDL,
    UrbLink: *mut URB,
    hca: URB_HCD_AREA,
    BitField: UCHAR,
    Reserved2: UCHAR,
    InterfaceNumber: UCHAR,
    MS_PageIndex: UCHAR,
    MS_FeatureDescriptorIndex: USHORT,
    Reserved3: USHORT,
}}
BITFIELD!{URB_OS_FEATURE_DESCRIPTOR_REQUEST BitField: UCHAR [
    Recipient set_Recipient[0..5],
    Reserved1 set_Reserved1[5..8],
]}
STRUCT!{struct URB_CONTROL_TRANSFER {
    Hdr: URB_HEADER,
    PipeHandle: USBD_PIPE_HANDLE,
    TransferFlags: ULONG,
    TransferBufferLength: ULONG,
    TransferBuffer: PVOID,
    TransferBufferMDL: PMDL,
    UrbLink: *mut URB,
    hca: URB_HCD_AREA,
    SetupPacket: [UCHAR; 8],
}}
#[cfg(target_pointer_width = "64")]
STRUCT!{struct URB_CONTROL_TRANSFER_EX {
    Hdr: URB_HEADER,
    PipeHandle: USBD_PIPE_HANDLE,
    TransferFlags: ULONG,
    TransferBufferLength: ULONG,
    TransferBuffer: PVOID,
    TransferBufferMDL: PMDL,
    Timeout: ULONG,
    Pad: ULONG,
    hca: URB_HCD_AREA,
    SetupPacket: [UCHAR; 8],
}}
#[cfg(target_pointer_width = "32")]
STRUCT!{struct URB_CONTROL_TRANSFER_EX {
    Hdr: URB_HEADER,
    PipeHandle: USBD_PIPE_HANDLE,
    TransferFlags: ULONG,
    TransferBufferLength: ULONG,
    TransferBuffer: PVOID,
    TransferBufferMDL: PMDL,
    Timeout: ULONG,
    hca: URB_HCD_AREA,
    SetupPacket: [UCHAR; 8],
}}
STRUCT!{struct URB_BULK_OR_INTERRUPT_TRANSFER {
    Hdr: URB_HEADER,
    PipeHandle: USBD_PIPE_HANDLE,
    TransferFlags: ULONG,
    TransferBufferLength: ULONG,
    TransferBuffer: PVOID,
    TransferBufferMDL: PMDL,
    UrbLink: *mut URB,
    hca: URB_HCD_AREA,
}}
STRUCT!{struct USBD_ISO_PACKET_DESCRIPTOR {
    Offset: ULONG,
    Length: ULONG,
    Status: USBD_STATUS,
}}
pub type PUSBD_ISO_PACKET_DESCRIPTOR = *mut USBD_ISO_PACKET_DESCRIPTOR;
STRUCT!{struct URB_ISOCH_TRANSFER {
    Hdr: URB_HEADER,
    PipeHandle: USBD_PIPE_HANDLE,
    TransferFlags: ULONG,
    TransferBufferLength: ULONG,
    TransferBuffer: PVOID,
    TransferBufferMDL: PMDL,
    UrbLink: *mut URB,
    hca: URB_HCD_AREA,
    StartFrame: ULONG,
    NumberOfPackets: ULONG,
    ErrorCount: ULONG,
    IsoPacket: [USBD_ISO_PACKET_DESCRIPTOR; 1],
}}
pub const URB_OPEN_STATIC_STREAMS_VERSION_100: USHORT = 0x100;
STRUCT!{struct USBD_STREAM_INFORMATION {
    PipeHandle: USBD_PIPE_HANDLE,
    StreamID: ULONG,
    MaximumTransferSize: ULONG,
    PipeFlags: ULONG,
}}
pub type PUSBD_STREAM_INFORMATION = *mut USBD_STREAM_INFORMATION;
STRUCT!{struct URB_OPEN_STATIC_STREAMS {
    Hdr: URB_HEADER,
    PipeHandle: USBD_PIPE_HANDLE,
    NumberOfStreams: ULONG,
    StreamInfoVersion: USHORT,
    StreamInfoSize: USHORT,
    Streams: PUSBD_STREAM_INFORMATION,
}}
UNION!{union URB_u {
    [u32; 24] [u64; 19],
    UrbHeader UrbHeader_mut: URB_HEADER,
    UrbSelectInterface UrbSelectInterface_mut: URB_SELECT_INTERFACE,
    UrbSelectConfiguration UrbSelectConfiguration_mut: URB_SELECT_CONFIGURATION,
    UrbPipeRequest UrbPipeRequest_mut: URB_PIPE_REQUEST,
    UrbFrameLengthControl UrbFrameLengthControl_mut: URB_FRAME_LENGTH_CONTROL,
    UrbGetFrameLength UrbGetFrameLength_mut: URB_GET_FRAME_LENGTH,
    UrbSetFrameLength UrbSetFrameLength_mut: URB_SET_FRAME_LENGTH,
    UrbGetCurrentFrameNumber UrbGetCurrentFrameNumber_mut: URB_GET_CURRENT_FRAME_NUMBER,
    UrbControlTransfer UrbControlTransfer_mut: URB_CONTROL_TRANSFER,
    UrbControlTransferEx UrbControlTransferEx_mut: URB_CONTROL_TRANSFER_EX,
    UrbBulkOrInterruptTransfer UrbBulkOrInterruptTransfer_mut: URB_BULK_OR_INTERRUPT_TRANSFER,
    UrbIsochronousTransfer UrbIsochronousTransfer_mut: URB_ISOCH_TRANSFER,
    UrbControlDescriptorRequest UrbControlDescriptorRequest_mut: URB_CONTROL_DESCRIPTOR_REQUEST,
    UrbControlGetStatusRequest UrbControlGetStatusRequest_mut: URB_CONTROL_GET_STATUS_REQUEST,
    UrbControlFeatureRequest UrbControlFeatureRequest_mut: URB_CONTROL_FEATURE_REQUEST,
    UrbControlVendorClassRequest UrbControlVendorClassRequest_mut:
        URB_CONTROL_VENDOR_OR_CLASS_REQUEST,
    UrbControlGetInterfaceRequest UrbControlGetInterfaceRequest_mut:
        URB_CONTROL_GET_INTERFACE_REQUEST,
    UrbControlGetConfigurationRequest UrbControlGetConfigurationRequest_mut:
        URB_CONTROL_GET_CONFIGURATION_REQUEST,
    UrbOSFeatureDescriptorRequest UrbOSFeatureDescriptorRequest_mut:
        URB_OS_FEATURE_DESCRIPTOR_REQUEST,
    UrbOpenStaticStreams UrbOpenStaticStreams_mut: URB_OPEN_STATIC_STREAMS,
}}
STRUCT!{struct URB {
    u: URB_u,
}}
pub type PURB = *mut URB;
