📄 usb.h
字号:
/* * usb.h * * USB support. * * This file is part of the w32api package. * * Contributors: * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> * * THIS SOFTWARE IS NOT COPYRIGHTED * * This source code is offered for use in the public domain. You may * use, modify or distribute it freely. * * This code is distributed in the hope that it will be useful but * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY * DISCLAIMED. This includes but is not limited to warranties of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * */#ifndef __USB_H#define __USB_H#if __GNUC__ >=3#pragma GCC system_header#endif#ifdef __USBDI_H#error usbdi.h cannot be included with usb.h#else#ifdef __cplusplusextern "C" {#endif#include "ntddk.h"#include "usb100.h"typedef LONG USBD_STATUS;typedef PVOID USBD_PIPE_HANDLE;typedef PVOID USBD_CONFIGURATION_HANDLE;typedef PVOID USBD_INTERFACE_HANDLE;#define USBD_STATUS_SUCCESS ((USBD_STATUS)0x00000000L)#define USBD_STATUS_PENDING ((USBD_STATUS)0x40000000L)#define USBD_STATUS_CRC ((USBD_STATUS)0xC0000001L)#define USBD_STATUS_BTSTUFF ((USBD_STATUS)0xC0000002L)#define USBD_STATUS_DATA_TOGGLE_MISMATCH ((USBD_STATUS)0xC0000003L)#define USBD_STATUS_STALL_PID ((USBD_STATUS)0xC0000004L)#define USBD_STATUS_DEV_NOT_RESPONDING ((USBD_STATUS)0xC0000005L)#define USBD_STATUS_PID_CHECK_FAILURE ((USBD_STATUS)0xC0000006L)#define USBD_STATUS_UNEXPECTED_PID ((USBD_STATUS)0xC0000007L)#define USBD_STATUS_DATA_OVERRUN ((USBD_STATUS)0xC0000008L)#define USBD_STATUS_DATA_UNDERRUN ((USBD_STATUS)0xC0000009L)#define USBD_STATUS_RESERVED1 ((USBD_STATUS)0xC000000AL)#define USBD_STATUS_RESERVED2 ((USBD_STATUS)0xC000000BL)#define USBD_STATUS_BUFFER_OVERRUN ((USBD_STATUS)0xC000000CL)#define USBD_STATUS_BUFFER_UNDERRUN ((USBD_STATUS)0xC000000DL)#define USBD_STATUS_NOT_ACCESSED ((USBD_STATUS)0xC000000FL)#define USBD_STATUS_FIFO ((USBD_STATUS)0xC0000010L)#define USBD_STATUS_XACT_ERROR ((USBD_STATUS)0xC0000011L)#define USBD_STATUS_BABBLE_DETECTED ((USBD_STATUS)0xC0000012L)#define USBD_STATUS_DATA_BUFFER_ERROR ((USBD_STATUS)0xC0000013L)#define USBD_STATUS_ENDPOINT_HALTED ((USBD_STATUS)0xC0000030L)#define USBD_STATUS_INVALID_URB_FUNCTION ((USBD_STATUS)0x80000200L)#define USBD_STATUS_INVALID_PARAMETER ((USBD_STATUS)0x80000300L)#define USBD_STATUS_ERROR_BUSY ((USBD_STATUS)0x80000400L)#define USBD_STATUS_INVALID_PIPE_HANDLE ((USBD_STATUS)0x80000600L)#define USBD_STATUS_NO_BANDWIDTH ((USBD_STATUS)0x80000700L)#define USBD_STATUS_INTERNAL_HC_ERROR ((USBD_STATUS)0x80000800L)#define USBD_STATUS_ERROR_SHORT_TRANSFER ((USBD_STATUS)0x80000900L)#define USBD_STATUS_BAD_START_FRAME ((USBD_STATUS)0xC0000A00L)#define USBD_STATUS_ISOCH_REQUEST_FAILED ((USBD_STATUS)0xC0000B00L)#define USBD_STATUS_FRAME_CONTROL_OWNED ((USBD_STATUS)0xC0000C00L)#define USBD_STATUS_FRAME_CONTROL_NOT_OWNED \ ((USBD_STATUS)0xC0000D00L)#define USBD_STATUS_NOT_SUPPORTED ((USBD_STATUS)0xC0000E00L)#define USBD_STATUS_INAVLID_CONFIGURATION_DESCRIPTOR \ ((USBD_STATUS)0xC0000F00L)#define USBD_STATUS_INSUFFICIENT_RESOURCES \ ((USBD_STATUS)0xC0001000L) #define USBD_STATUS_SET_CONFIG_FAILED ((USBD_STATUS)0xC0002000L)#define USBD_STATUS_BUFFER_TOO_SMALL ((USBD_STATUS)0xC0003000L)#define USBD_STATUS_INTERFACE_NOT_FOUND ((USBD_STATUS)0xC0004000L)#define USBD_STATUS_INAVLID_PIPE_FLAGS ((USBD_STATUS)0xC0005000L)#define USBD_STATUS_TIMEOUT ((USBD_STATUS)0xC0006000L)#define USBD_STATUS_DEVICE_GONE ((USBD_STATUS)0xC0007000L)#define USBD_STATUS_STATUS_NOT_MAPPED ((USBD_STATUS)0xC0008000L)#define USBD_STATUS_CANCELED ((USBD_STATUS)0xC0010000L)#define USBD_STATUS_ISO_NOT_ACCESSED_BY_HW \ ((USBD_STATUS)0xC0020000L) #define USBD_STATUS_ISO_TD_ERROR ((USBD_STATUS)0xC0030000L) #define USBD_STATUS_ISO_NA_LATE_USBPORT ((USBD_STATUS)0xC0040000L) #define USBD_STATUS_ISO_NOT_ACCESSED_LATE ((USBD_STATUS)0xC0050000L)#define USBD_SUCCESS(Status) ((USBD_STATUS)(Status) >= 0)#define USBD_PENDING(Status) ((ULONG)(Status) >> 30 == 1)#define USBD_ERROR(Status) ((USBD_STATUS)(Status) < 0)/* URB TransferFlags constants */#define USBD_TRANSFER_DIRECTION(x) ((x) & USBD_TRANSFER_DIRECTION_IN)#define USBD_TRANSFER_DIRECTION_OUT 0 #define USBD_TRANSFER_DIRECTION_BIT 0#define USBD_TRANSFER_DIRECTION_IN (1 << USBD_TRANSFER_DIRECTION_BIT)#define USBD_SHORT_TRANSFER_OK_BIT 1#define USBD_SHORT_TRANSFER_OK (1 << USBD_SHORT_TRANSFER_OK_BIT)#define USBD_START_ISO_TRANSFER_ASAP_BIT 2#define USBD_START_ISO_TRANSFER_ASAP (1 << USBD_START_ISO_TRANSFER_ASAP_BIT)#define USBD_DEFAULT_PIPE_TRANSFER_BIT 3#define USBD_DEFAULT_PIPE_TRANSFER (1 << USBD_DEFAULT_PIPE_TRANSFER_BIT)#define USBD_TRANSFER_DIRECTION_FLAG(flags) ((flags) & USBD_TRANSFER_DIRECTION)#define VALID_TRANSFER_FLAGS_MASK \ (USBD_SHORT_TRANSFER_OK | \ USBD_TRANSFER_DIRECTION | \ USBD_START_ISO_TRANSFER_ASAP | \ USBD_DEFAULT_PIPE_TRANSFER)#define USB_DEFAULT_DEVICE_ADDRESS 0#define USB_DEFAULT_ENDPOINT_ADDRESS 0#define USB_DEFAULT_MAX_PACKET 64#define USBD_ISO_START_FRAME_RANGE 1024#define USBD_DEFAULT_MAXIMUM_TRANSFER_SIZE 0xFFFFFFFFtypedef enum _USB_CONTROLLER_FLAVOR { USB_HcGeneric = 0, OHCI_Generic = 100, OHCI_Hydra, OHCI_NEC, UHCI_Generic = 200, UHCI_Piix4, UHCI_Piix3, UHCI_Ich2_1, UHCI_Ich2_2, UHCI_Ich1, UHCI_VIA = 250, EHCI_Generic = 1000, EHCI_NEC = 2000, EHCI_Lucent = 3000} USB_CONTROLLER_FLAVOR;struct _URB_HEADER { USHORT Length; USHORT Function; USBD_STATUS Status; PVOID UsbdDeviceHandle; ULONG UsbdFlags;};typedef struct _USBD_VERSION_INFORMATION { ULONG USBDI_Version; ULONG Supported_USB_Version;} USBD_VERSION_INFORMATION, *PUSBD_VERSION_INFORMATION;struct _URB_HCD_AREA { PVOID Reserved8[8];};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;};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_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_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_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_STATUS_REQUEST { struct _URB_HEADER Hdr; PVOID Reserved; ULONG Reserved0; ULONG TransferBufferLength; PVOID TransferBuffer; PMDL TransferBufferMDL;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -