📄 usb.h
字号:
struct _URB *UrbLink; struct _URB_HCD_AREA hca; UCHAR Reserved1[4]; USHORT Index; USHORT Reserved2;};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];};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_FRAME_LENGTH_CONTROL { struct _URB_HEADER Hdr;};struct _URB_GET_CURRENT_FRAME_NUMBER { struct _URB_HEADER Hdr; ULONG FrameNumber;};struct _URB_GET_FRAME_LENGTH { struct _URB_HEADER Hdr; ULONG FrameLength; ULONG FrameNumber;};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 enum _USBD_PIPE_TYPE { UsbdPipeTypeControl, UsbdPipeTypeIsochronous, UsbdPipeTypeBulk, UsbdPipeTypeInterrupt} USBD_PIPE_TYPE;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_PIPE_DIRECTION_IN(pipeInformation) \ ((pipeInformation)->EndpointAddress & USB_ENDPOINT_DIRECTION_MASK) 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_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_SET_FRAME_LENGTH { struct _URB_HEADER Hdr; LONG FrameLengthDelta;};typedef struct _URB { _ANONYMOUS_UNION 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; 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; } DUMMYUNIONNAME;} URB, *PURB;#define URB_FROM_IRP(Irp) ((IoGetCurrentIrpStackLocation(Irp))->Parameters.Others.Argument1)#define URB_FUNCTION_SELECT_CONFIGURATION 0x0000#define URB_FUNCTION_SELECT_INTERFACE 0x0001#define URB_FUNCTION_ABORT_PIPE 0x0002#define URB_FUNCTION_TAKE_FRAME_LENGTH_CONTROL 0x0003#define URB_FUNCTION_RELEASE_FRAME_LENGTH_CONTROL 0x0004#define URB_FUNCTION_GET_FRAME_LENGTH 0x0005#define URB_FUNCTION_SET_FRAME_LENGTH 0x0006#define URB_FUNCTION_GET_CURRENT_FRAME_NUMBER 0x0007#define URB_FUNCTION_CONTROL_TRANSFER 0x0008#define URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER 0x0009#define URB_FUNCTION_ISOCH_TRANSFER 0x000A#define URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE 0x000B#define URB_FUNCTION_SET_DESCRIPTOR_TO_DEVICE 0x000C#define URB_FUNCTION_SET_FEATURE_TO_DEVICE 0x000D#define URB_FUNCTION_SET_FEATURE_TO_INTERFACE 0x000E#define URB_FUNCTION_SET_FEATURE_TO_ENDPOINT 0x000F#define URB_FUNCTION_CLEAR_FEATURE_TO_DEVICE 0x0010#define URB_FUNCTION_CLEAR_FEATURE_TO_INTERFACE 0x0011#define URB_FUNCTION_CLEAR_FEATURE_TO_ENDPOINT 0x0012#define URB_FUNCTION_GET_STATUS_FROM_DEVICE 0x0013#define URB_FUNCTION_GET_STATUS_FROM_INTERFACE 0x0014#define URB_FUNCTION_GET_STATUS_FROM_ENDPOINT 0x0015#define URB_FUNCTION_RESERVED_0X0016 0x0016#define URB_FUNCTION_VENDOR_DEVICE 0x0017#define URB_FUNCTION_VENDOR_INTERFACE 0x0018#define URB_FUNCTION_VENDOR_ENDPOINT 0x0019#define URB_FUNCTION_CLASS_DEVICE 0x001A#define URB_FUNCTION_CLASS_INTERFACE 0x001B#define URB_FUNCTION_CLASS_ENDPOINT 0x001C#define URB_FUNCTION_RESERVE_0X001D 0x001D#define URB_FUNCTION_SYNC_RESET_PIPE_AND_CLEAR_STALL 0x001E#define URB_FUNCTION_CLASS_OTHER 0x001F#define URB_FUNCTION_VENDOR_OTHER 0x0020#define URB_FUNCTION_GET_STATUS_FROM_OTHER 0x0021#define URB_FUNCTION_CLEAR_FEATURE_TO_OTHER 0x0022#define URB_FUNCTION_SET_FEATURE_TO_OTHER 0x0023#define URB_FUNCTION_GET_DESCRIPTOR_FROM_ENDPOINT 0x0024#define URB_FUNCTION_SET_DESCRIPTOR_TO_ENDPOINT 0x0025#define URB_FUNCTION_GET_CONFIGURATION 0x0026#define URB_FUNCTION_GET_INTERFACE 0x0027#define URB_FUNCTION_GET_DESCRIPTOR_FROM_INTERFACE 0x0028#define URB_FUNCTION_SET_DESCRIPTOR_TO_INTERFACE 0x0029#define URB_FUNCTION_GET_MS_FEATURE_DESCRIPTOR 0x002A#define URB_FUNCTION_RESERVE_0X002B 0x002B#define URB_FUNCTION_RESERVE_0X002C 0x002C#define URB_FUNCTION_RESERVE_0X002D 0x002D#define URB_FUNCTION_RESERVE_0X002E 0x002E#define URB_FUNCTION_RESERVE_0X002F 0x002F#define URB_FUNCTION_SYNC_RESET_PIPE 0x0030#define URB_FUNCTION_SYNC_CLEAR_STALL 0x0031#define USBD_PF_CHANGE_MAX_PACKET 0x00000001#define USBD_PF_SHORT_PACKET_OPT 0x00000002 #define USBD_PF_ENABLE_RT_THREAD_ACCESS 0x00000004 #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)#define OS_STRING_DESCRIPTOR_INDEX 0xEE#define MS_GENRE_DESCRIPTOR_INDEX 0x0001#define MS_POWER_DESCRIPTOR_INDEX 0x0002#define MS_OS_STRING_SIGNATURE L"MSFT100"typedef struct _OS_STRING { UCHAR bLength; UCHAR bDescriptorType; WCHAR MicrosoftString[7]; UCHAR bVendorCode; UCHAR bPad;} OS_STRING, *POS_STRING;#ifdef __cplusplus}#endif#endif /* defined __USBDI_H */ #endif /* __USB_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -