Author: akhaldi
Date: Fri Mar 5 12:58:34 2010
New Revision: 45865
URL:
http://svn.reactos.org/svn/reactos?rev=45865&view=rev
Log:
More work on USB related definitions
Modified:
branches/header-work/include/psdk/usb.h
Modified: branches/header-work/include/psdk/usb.h
URL:
http://svn.reactos.org/svn/reactos/branches/header-work/include/psdk/usb.h?…
==============================================================================
--- branches/header-work/include/psdk/usb.h [iso-8859-1] (original)
+++ branches/header-work/include/psdk/usb.h [iso-8859-1] Fri Mar 5 12:58:34 2010
@@ -9,10 +9,6 @@
#endif
#endif
-#ifdef __USBDI_H__
-error
-#endif
-
#ifdef OSR21_COMPAT
#pragma message("WARNING: OSR21_COMPAT SWITCH NOT SUPPORTED")
#endif
@@ -24,14 +20,16 @@
#endif
#endif
-#define USBDI_VERSION 0x00000500
+#define USBDI_VERSION 0x00000600
#include "usb200.h"
-typedef LONG USBD_STATUS;
-typedef PVOID USBD_PIPE_HANDLE;
-typedef PVOID USBD_CONFIGURATION_HANDLE;
-typedef PVOID USBD_INTERFACE_HANDLE;
+#define USB_PORTATTR_NO_CONNECTOR 0x00000001
+#define USB_PORTATTR_SHARED_USB2 0x00000002
+#define USB_PORTATTR_MINI_CONNECTOR 0x00000004
+#define USB_PORTATTR_OEM_CONNECTOR 0x00000008
+#define USB_PORTATTR_OWNED_BY_CC 0x01000000
+#define USB_PORTATTR_NO_OVERCURRENT_UI 0x02000000
typedef enum _USB_CONTROLLER_FLAVOR {
USB_HcGeneric = 0,
@@ -60,282 +58,7 @@
EHCI_Lucent = 3000
} USB_CONTROLLER_FLAVOR;
-typedef enum _USBD_PIPE_TYPE {
- UsbdPipeTypeControl,
- UsbdPipeTypeIsochronous,
- UsbdPipeTypeBulk,
- UsbdPipeTypeInterrupt
-} USBD_PIPE_TYPE;
-
-typedef struct _USBD_VERSION_INFORMATION {
- ULONG USBDI_Version;
- ULONG Supported_USB_Version;
-} USBD_VERSION_INFORMATION, *PUSBD_VERSION_INFORMATION;
-
-typedef struct _USBD_PIPE_INFORMATION {
- USHORT MaximumPacketSize;
- UCHAR EndpointAddress;
- UCHAR Interval;
- USBD_PIPE_TYPE PipeType;
- USBD_PIPE_HANDLE PipeHandle;
- ULONG MaximumTransferSize;
- ULONG PipeFlags;
-} USBD_PIPE_INFORMATION, *PUSBD_PIPE_INFORMATION;
-
-typedef struct _USBD_DEVICE_INFORMATION {
- ULONG OffsetNext;
- PVOID UsbdDeviceHandle;
- USB_DEVICE_DESCRIPTOR DeviceDescriptor;
-} USBD_DEVICE_INFORMATION, *PUSBD_DEVICE_INFORMATION;
-
-typedef struct _USBD_INTERFACE_INFORMATION {
- USHORT Length;
- UCHAR InterfaceNumber;
- UCHAR AlternateSetting;
- UCHAR Class;
- UCHAR SubClass;
- UCHAR Protocol;
- UCHAR Reserved;
- USBD_INTERFACE_HANDLE InterfaceHandle;
- ULONG NumberOfPipes;
- USBD_PIPE_INFORMATION Pipes[1];
-} USBD_INTERFACE_INFORMATION, *PUSBD_INTERFACE_INFORMATION;
-
-struct _URB_HCD_AREA {
- PVOID Reserved8[8];
-};
-
-struct _URB_HEADER {
- USHORT Length;
- USHORT Function;
- USBD_STATUS Status;
- PVOID UsbdDeviceHandle;
- ULONG UsbdFlags;
-};
-
-struct _URB_SELECT_INTERFACE {
- struct _URB_HEADER Hdr;
- USBD_CONFIGURATION_HANDLE ConfigurationHandle;
- USBD_INTERFACE_INFORMATION Interface;
-};
-
-struct _URB_SELECT_CONFIGURATION {
- struct _URB_HEADER Hdr;
- PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor;
- USBD_CONFIGURATION_HANDLE ConfigurationHandle;
- USBD_INTERFACE_INFORMATION Interface;
-};
-
-struct _URB_PIPE_REQUEST {
- struct _URB_HEADER Hdr;
- USBD_PIPE_HANDLE PipeHandle;
- ULONG Reserved;
-};
-
-struct _URB_FRAME_LENGTH_CONTROL {
- struct _URB_HEADER Hdr;
-};
-
-struct _URB_GET_FRAME_LENGTH {
- struct _URB_HEADER Hdr;
- ULONG FrameLength;
- ULONG FrameNumber;
-};
-
-struct _URB_SET_FRAME_LENGTH {
- struct _URB_HEADER Hdr;
- LONG FrameLengthDelta;
-};
-
-struct _URB_GET_CURRENT_FRAME_NUMBER {
- struct _URB_HEADER Hdr;
- ULONG FrameNumber;
-};
-
-struct _URB_CONTROL_DESCRIPTOR_REQUEST {
- struct _URB_HEADER Hdr;
- PVOID Reserved;
- ULONG Reserved0;
- ULONG TransferBufferLength;
- PVOID TransferBuffer;
- PMDL TransferBufferMDL;
- struct _URB *UrbLink;
- struct _URB_HCD_AREA hca;
- USHORT Reserved1;
- UCHAR Index;
- UCHAR DescriptorType;
- USHORT LanguageId;
- USHORT Reserved2;
-};
-
-struct _URB_CONTROL_GET_STATUS_REQUEST {
- struct _URB_HEADER Hdr;
- PVOID Reserved;
- ULONG Reserved0;
- ULONG TransferBufferLength;
- PVOID TransferBuffer;
- PMDL TransferBufferMDL;
- struct _URB *UrbLink;
- struct _URB_HCD_AREA hca;
- UCHAR Reserved1[4];
- USHORT Index;
- USHORT Reserved2;
-};
-
-struct _URB_CONTROL_FEATURE_REQUEST {
- struct _URB_HEADER Hdr;
- PVOID Reserved;
- ULONG Reserved2;
- ULONG Reserved3;
- PVOID Reserved4;
- PMDL Reserved5;
- struct _URB *UrbLink;
- struct _URB_HCD_AREA hca;
- USHORT Reserved0;
- USHORT FeatureSelector;
- USHORT Index;
- USHORT Reserved1;
-};
-
-struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST {
- struct _URB_HEADER Hdr;
- PVOID Reserved;
- ULONG TransferFlags;
- ULONG TransferBufferLength;
- PVOID TransferBuffer;
- PMDL TransferBufferMDL;
- struct _URB *UrbLink;
- struct _URB_HCD_AREA hca;
- UCHAR RequestTypeReservedBits;
- UCHAR Request;
- USHORT Value;
- USHORT Index;
- USHORT Reserved1;
-};
-
-struct _URB_CONTROL_GET_INTERFACE_REQUEST {
- struct _URB_HEADER Hdr;
- PVOID Reserved;
- ULONG Reserved0;
- ULONG TransferBufferLength;
- PVOID TransferBuffer;
- PMDL TransferBufferMDL;
- struct _URB *UrbLink;
- struct _URB_HCD_AREA hca;
- UCHAR Reserved1[4];
- USHORT Interface;
- USHORT Reserved2;
-};
-
-struct _URB_CONTROL_GET_CONFIGURATION_REQUEST {
- struct _URB_HEADER Hdr;
- PVOID Reserved;
- ULONG Reserved0;
- ULONG TransferBufferLength;
- PVOID TransferBuffer;
- PMDL TransferBufferMDL;
- struct _URB *UrbLink;
- struct _URB_HCD_AREA hca;
- UCHAR Reserved1[8];
-};
-
-struct _URB_CONTROL_TRANSFER {
- struct _URB_HEADER Hdr;
- USBD_PIPE_HANDLE PipeHandle;
- ULONG TransferFlags;
- ULONG TransferBufferLength;
- PVOID TransferBuffer;
- PMDL TransferBufferMDL;
- struct _URB *UrbLink;
- struct _URB_HCD_AREA hca;
- UCHAR SetupPacket[8];
-};
-
-#if (_WIN32_WINNT >= 0x0600)
-
-struct _URB_CONTROL_TRANSFER_EX {
- struct _URB_HEADER Hdr;
- USBD_PIPE_HANDLE PipeHandle;
- ULONG TransferFlags;
- ULONG TransferBufferLength;
- PVOID TransferBuffer;
- PMDL TransferBufferMDL;
- ULONG Timeout;
-#ifdef WIN64
- ULONG Pad;
-#endif
- struct _URB_HCD_AREA hca;
- UCHAR SetupPacket[8];
-};
-
-#endif
-
-struct _URB_BULK_OR_INTERRUPT_TRANSFER {
- struct _URB_HEADER Hdr;
- USBD_PIPE_HANDLE PipeHandle;
- ULONG TransferFlags;
- ULONG TransferBufferLength;
- PVOID TransferBuffer;
- PMDL TransferBufferMDL;
- struct _URB *UrbLink;
- struct _URB_HCD_AREA hca;
-};
-
-typedef struct _USBD_ISO_PACKET_DESCRIPTOR {
- ULONG Offset;
- ULONG Length;
- USBD_STATUS Status;
-} USBD_ISO_PACKET_DESCRIPTOR, *PUSBD_ISO_PACKET_DESCRIPTOR;
-
-struct _URB_ISOCH_TRANSFER {
- struct _URB_HEADER Hdr;
- USBD_PIPE_HANDLE PipeHandle;
- ULONG TransferFlags;
- ULONG TransferBufferLength;
- PVOID TransferBuffer;
- PMDL TransferBufferMDL;
- struct _URB *UrbLink;
- struct _URB_HCD_AREA hca;
- ULONG StartFrame;
- ULONG NumberOfPackets;
- ULONG ErrorCount;
- USBD_ISO_PACKET_DESCRIPTOR IsoPacket[1];
-};
-
-typedef struct _URB {
- __GNU_EXTENSION union {
- struct _URB_HEADER UrbHeader;
- struct _URB_SELECT_INTERFACE UrbSelectInterface;
- struct _URB_SELECT_CONFIGURATION UrbSelectConfiguration;
- struct _URB_PIPE_REQUEST UrbPipeRequest;
- struct _URB_FRAME_LENGTH_CONTROL UrbFrameLengthControl;
- struct _URB_GET_FRAME_LENGTH UrbGetFrameLength;
- struct _URB_SET_FRAME_LENGTH UrbSetFrameLength;
- struct _URB_GET_CURRENT_FRAME_NUMBER UrbGetCurrentFrameNumber;
- struct _URB_CONTROL_TRANSFER UrbControlTransfer;
-#if (_WIN32_WINNT >= 0x0600)
- struct _URB_CONTROL_TRANSFER_EX UrbControlTransferEx;
-#endif
- struct _URB_BULK_OR_INTERRUPT_TRANSFER UrbBulkOrInterruptTransfer;
- struct _URB_ISOCH_TRANSFER UrbIsochronousTransfer;
- struct _URB_CONTROL_DESCRIPTOR_REQUEST UrbControlDescriptorRequest;
- struct _URB_CONTROL_GET_STATUS_REQUEST UrbControlGetStatusRequest;
- struct _URB_CONTROL_FEATURE_REQUEST UrbControlFeatureRequest;
- struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST UrbControlVendorClassRequest;
- struct _URB_CONTROL_GET_INTERFACE_REQUEST UrbControlGetInterfaceRequest;
- struct _URB_CONTROL_GET_CONFIGURATION_REQUEST UrbControlGetConfigurationRequest;
-#if (_WIN32_WINNT >= 0x0501)
- struct _URB_OS_FEATURE_DESCRIPTOR_REQUEST UrbOSFeatureDescriptorRequest;
-#endif
- };
-} URB, *PURB;
-
-#define USB_PORTATTR_NO_CONNECTOR 0x00000001
-#define USB_PORTATTR_SHARED_USB2 0x00000002
-#define USB_PORTATTR_MINI_CONNECTOR 0x00000004
-#define USB_PORTATTR_OEM_CONNECTOR 0x00000008
-#define USB_PORTATTR_OWNED_BY_CC 0x01000000
-#define USB_PORTATTR_NO_OVERCURRENT_UI 0x02000000
+
#define USB_DEFAULT_DEVICE_ADDRESS 0
#define USB_DEFAULT_ENDPOINT_ADDRESS 0
#define USB_DEFAULT_MAX_PACKET 64
@@ -418,6 +141,9 @@
#define VALID_TRANSFER_FLAGS_MASK (USBD_SHORT_TRANSFER_OK |
USBD_TRANSFER_DIRECTION | \
USBD_START_ISO_TRANSFER_ASAP |
USBD_DEFAULT_PIPE_TRANSFER)
#define USBD_ISO_START_FRAME_RANGE 1024
+
+typedef LONG USBD_STATUS;
+
#define USBD_SUCCESS(Status) ((USBD_STATUS)(Status) >= 0)
#define USBD_PENDING(Status) ((ULONG)(Status) >> 30 ==
1)
#define USBD_ERROR(Status) ((USBD_STATUS)(Status) < 0)
@@ -480,6 +206,9 @@
#define USBD_STATUS_BAD_NUMBER_OF_ENDPOINTS ((USBD_STATUS)0xC0100008L)
#define USBD_STATUS_BAD_ENDPOINT_ADDRESS ((USBD_STATUS)0xC0100009L)
+typedef PVOID USBD_PIPE_HANDLE;
+typedef PVOID USBD_CONFIGURATION_HANDLE;
+typedef PVOID USBD_INTERFACE_HANDLE;
#if (_WIN32_WINNT >= 0x0501)
#define USBD_DEFAULT_MAXIMUM_TRANSFER_SIZE 0xFFFFFFFF
@@ -487,7 +216,35 @@
#define USBD_DEFAULT_MAXIMUM_TRANSFER_SIZE PAGE_SIZE
#endif
-
+typedef struct _USBD_VERSION_INFORMATION {
+ ULONG USBDI_Version;
+ ULONG Supported_USB_Version;
+} USBD_VERSION_INFORMATION, *PUSBD_VERSION_INFORMATION;
+
+typedef enum _USBD_PIPE_TYPE {
+ UsbdPipeTypeControl,
+ UsbdPipeTypeIsochronous,
+ UsbdPipeTypeBulk,
+ UsbdPipeTypeInterrupt
+} USBD_PIPE_TYPE;
+
+#define USBD_PIPE_DIRECTION_IN(pipeInformation)
((pipeInformation)->EndpointAddress & USB_ENDPOINT_DIRECTION_MASK)
+
+typedef struct _USBD_DEVICE_INFORMATION {
+ ULONG OffsetNext;
+ PVOID UsbdDeviceHandle;
+ USB_DEVICE_DESCRIPTOR DeviceDescriptor;
+} USBD_DEVICE_INFORMATION, *PUSBD_DEVICE_INFORMATION;
+
+typedef struct _USBD_PIPE_INFORMATION {
+ USHORT MaximumPacketSize;
+ UCHAR EndpointAddress;
+ UCHAR Interval;
+ USBD_PIPE_TYPE PipeType;
+ USBD_PIPE_HANDLE PipeHandle;
+ ULONG MaximumTransferSize;
+ ULONG PipeFlags;
+} USBD_PIPE_INFORMATION, *PUSBD_PIPE_INFORMATION;
#define USBD_PF_CHANGE_MAX_PACKET 0x00000001
#define USBD_PF_SHORT_PACKET_OPT 0x00000002
@@ -495,6 +252,157 @@
#define USBD_PF_MAP_ADD_TRANSFERS 0x00000008
#define USBD_PF_VALID_MASK (USBD_PF_CHANGE_MAX_PACKET |
USBD_PF_SHORT_PACKET_OPT | \
USBD_PF_ENABLE_RT_THREAD_ACCESS
| USBD_PF_MAP_ADD_TRANSFERS)
+
+typedef struct _USBD_INTERFACE_INFORMATION {
+ USHORT Length;
+ UCHAR InterfaceNumber;
+ UCHAR AlternateSetting;
+ UCHAR Class;
+ UCHAR SubClass;
+ UCHAR Protocol;
+ UCHAR Reserved;
+ USBD_INTERFACE_HANDLE InterfaceHandle;
+ ULONG NumberOfPipes;
+ USBD_PIPE_INFORMATION Pipes[1];
+} USBD_INTERFACE_INFORMATION, *PUSBD_INTERFACE_INFORMATION;
+
+struct _URB_HCD_AREA {
+ PVOID Reserved8[8];
+};
+
+struct _URB_HEADER {
+ USHORT Length;
+ USHORT Function;
+ USBD_STATUS Status;
+ PVOID UsbdDeviceHandle;
+ ULONG UsbdFlags;
+};
+
+struct _URB_SELECT_INTERFACE {
+ struct _URB_HEADER Hdr;
+ USBD_CONFIGURATION_HANDLE ConfigurationHandle;
+ USBD_INTERFACE_INFORMATION Interface;
+};
+
+struct _URB_SELECT_CONFIGURATION {
+ struct _URB_HEADER Hdr;
+ PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor;
+ USBD_CONFIGURATION_HANDLE ConfigurationHandle;
+ USBD_INTERFACE_INFORMATION Interface;
+};
+
+struct _URB_PIPE_REQUEST {
+ struct _URB_HEADER Hdr;
+ USBD_PIPE_HANDLE PipeHandle;
+ ULONG Reserved;
+};
+
+struct _URB_FRAME_LENGTH_CONTROL {
+ struct _URB_HEADER Hdr;
+};
+
+struct _URB_GET_FRAME_LENGTH {
+ struct _URB_HEADER Hdr;
+ ULONG FrameLength;
+ ULONG FrameNumber;
+};
+
+struct _URB_SET_FRAME_LENGTH {
+ struct _URB_HEADER Hdr;
+ LONG FrameLengthDelta;
+};
+
+struct _URB_GET_CURRENT_FRAME_NUMBER {
+ struct _URB_HEADER Hdr;
+ ULONG FrameNumber;
+};
+
+struct _URB_CONTROL_DESCRIPTOR_REQUEST {
+ struct _URB_HEADER Hdr;
+ PVOID Reserved;
+ ULONG Reserved0;
+ ULONG TransferBufferLength;
+ PVOID TransferBuffer;
+ PMDL TransferBufferMDL;
+ struct _URB *UrbLink;
+ struct _URB_HCD_AREA hca;
+ USHORT Reserved1;
+ UCHAR Index;
+ UCHAR DescriptorType;
+ USHORT LanguageId;
+ USHORT Reserved2;
+};
+
+struct _URB_CONTROL_GET_STATUS_REQUEST {
+ struct _URB_HEADER Hdr;
+ PVOID Reserved;
+ ULONG Reserved0;
+ ULONG TransferBufferLength;
+ PVOID TransferBuffer;
+ PMDL TransferBufferMDL;
+ struct _URB *UrbLink;
+ struct _URB_HCD_AREA hca;
+ UCHAR Reserved1[4];
+ USHORT Index;
+ USHORT Reserved2;
+};
+
+struct _URB_CONTROL_FEATURE_REQUEST {
+ struct _URB_HEADER Hdr;
+ PVOID Reserved;
+ ULONG Reserved2;
+ ULONG Reserved3;
+ PVOID Reserved4;
+ PMDL Reserved5;
+ struct _URB *UrbLink;
+ struct _URB_HCD_AREA hca;
+ USHORT Reserved0;
+ USHORT FeatureSelector;
+ USHORT Index;
+ USHORT Reserved1;
+};
+
+struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST {
+ struct _URB_HEADER Hdr;
+ PVOID Reserved;
+ ULONG TransferFlags;
+ ULONG TransferBufferLength;
+ PVOID TransferBuffer;
+ PMDL TransferBufferMDL;
+ struct _URB *UrbLink;
+ struct _URB_HCD_AREA hca;
+ UCHAR RequestTypeReservedBits;
+ UCHAR Request;
+ USHORT Value;
+ USHORT Index;
+ USHORT Reserved1;
+};
+
+struct _URB_CONTROL_GET_INTERFACE_REQUEST {
+ struct _URB_HEADER Hdr;
+ PVOID Reserved;
+ ULONG Reserved0;
+ ULONG TransferBufferLength;
+ PVOID TransferBuffer;
+ PMDL TransferBufferMDL;
+ struct _URB *UrbLink;
+ struct _URB_HCD_AREA hca;
+ UCHAR Reserved1[4];
+ USHORT Interface;
+ USHORT Reserved2;
+};
+
+struct _URB_CONTROL_GET_CONFIGURATION_REQUEST {
+ struct _URB_HEADER Hdr;
+ PVOID Reserved;
+ ULONG Reserved0;
+ ULONG TransferBufferLength;
+ PVOID TransferBuffer;
+ PMDL TransferBufferMDL;
+ struct _URB *UrbLink;
+ struct _URB_HCD_AREA hca;
+ UCHAR Reserved1[8];
+};
#if (_WIN32_WINNT >= 0x0501)
@@ -535,4 +443,93 @@
#endif
-#define USBD_PIPE_DIRECTION_IN(pipeInformation)
((pipeInformation)->EndpointAddress & USB_ENDPOINT_DIRECTION_MASK)
+struct _URB_CONTROL_TRANSFER {
+ struct _URB_HEADER Hdr;
+ USBD_PIPE_HANDLE PipeHandle;
+ ULONG TransferFlags;
+ ULONG TransferBufferLength;
+ PVOID TransferBuffer;
+ PMDL TransferBufferMDL;
+ struct _URB *UrbLink;
+ struct _URB_HCD_AREA hca;
+ UCHAR SetupPacket[8];
+};
+
+#if (_WIN32_WINNT >= 0x0600)
+
+struct _URB_CONTROL_TRANSFER_EX {
+ struct _URB_HEADER Hdr;
+ USBD_PIPE_HANDLE PipeHandle;
+ ULONG TransferFlags;
+ ULONG TransferBufferLength;
+ PVOID TransferBuffer;
+ PMDL TransferBufferMDL;
+ ULONG Timeout;
+#ifdef WIN64
+ ULONG Pad;
+#endif
+ struct _URB_HCD_AREA hca;
+ UCHAR SetupPacket[8];
+};
+
+#endif
+
+struct _URB_BULK_OR_INTERRUPT_TRANSFER {
+ struct _URB_HEADER Hdr;
+ USBD_PIPE_HANDLE PipeHandle;
+ ULONG TransferFlags;
+ ULONG TransferBufferLength;
+ PVOID TransferBuffer;
+ PMDL TransferBufferMDL;
+ struct _URB *UrbLink;
+ struct _URB_HCD_AREA hca;
+};
+
+typedef struct _USBD_ISO_PACKET_DESCRIPTOR {
+ ULONG Offset;
+ ULONG Length;
+ USBD_STATUS Status;
+} USBD_ISO_PACKET_DESCRIPTOR, *PUSBD_ISO_PACKET_DESCRIPTOR;
+
+struct _URB_ISOCH_TRANSFER {
+ struct _URB_HEADER Hdr;
+ USBD_PIPE_HANDLE PipeHandle;
+ ULONG TransferFlags;
+ ULONG TransferBufferLength;
+ PVOID TransferBuffer;
+ PMDL TransferBufferMDL;
+ struct _URB *UrbLink;
+ struct _URB_HCD_AREA hca;
+ ULONG StartFrame;
+ ULONG NumberOfPackets;
+ ULONG ErrorCount;
+ USBD_ISO_PACKET_DESCRIPTOR IsoPacket[1];
+};
+
+typedef struct _URB {
+ __GNU_EXTENSION union {
+ struct _URB_HEADER UrbHeader;
+ struct _URB_SELECT_INTERFACE UrbSelectInterface;
+ struct _URB_SELECT_CONFIGURATION UrbSelectConfiguration;
+ struct _URB_PIPE_REQUEST UrbPipeRequest;
+ struct _URB_FRAME_LENGTH_CONTROL UrbFrameLengthControl;
+ struct _URB_GET_FRAME_LENGTH UrbGetFrameLength;
+ struct _URB_SET_FRAME_LENGTH UrbSetFrameLength;
+ struct _URB_GET_CURRENT_FRAME_NUMBER UrbGetCurrentFrameNumber;
+ struct _URB_CONTROL_TRANSFER UrbControlTransfer;
+#if (_WIN32_WINNT >= 0x0600)
+ struct _URB_CONTROL_TRANSFER_EX UrbControlTransferEx;
+#endif
+ struct _URB_BULK_OR_INTERRUPT_TRANSFER UrbBulkOrInterruptTransfer;
+ struct _URB_ISOCH_TRANSFER UrbIsochronousTransfer;
+ struct _URB_CONTROL_DESCRIPTOR_REQUEST UrbControlDescriptorRequest;
+ struct _URB_CONTROL_GET_STATUS_REQUEST UrbControlGetStatusRequest;
+ struct _URB_CONTROL_FEATURE_REQUEST UrbControlFeatureRequest;
+ struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST UrbControlVendorClassRequest;
+ struct _URB_CONTROL_GET_INTERFACE_REQUEST UrbControlGetInterfaceRequest;
+ struct _URB_CONTROL_GET_CONFIGURATION_REQUEST UrbControlGetConfigurationRequest;
+#if (_WIN32_WINNT >= 0x0501)
+ struct _URB_OS_FEATURE_DESCRIPTOR_REQUEST UrbOSFeatureDescriptorRequest;
+#endif
+ };
+} URB, *PURB;