⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usbio_i.h

📁 reference about wireless design which is helpful to everyone
💻 H
📖 第 1 页 / 共 2 页
字号:
/************************************************************************
 *
 *  Module:       usbio_i.h
 *  Long name:    USBIO Driver Interface
 *  Description:  Defines the programming interface (API) of the USBIO driver
 *
 *  Runtime Env.: Win32
 *  Author(s):    Guenter Hildebrandt, Udo Eberhardt
 *  Company:      Thesycon GmbH, Ilmenau
 ************************************************************************/

#ifndef _USBIO_I_H_
#define _USBIO_I_H_

//
// Define the API version number.
// This will be incremented if changes are made.
//
// Applications should check if the driver supports the 
// required API version using IOCTL_USBIO_GET_DRIVER_INFO.
//
// current API version: 2.00
#define USBIO_API_VERSION   0x0200

//
// built-in (default) GUID for the USBIO interface
//
// IMPORTANT:
// Don't use this GUID for your own (custom) application. Generate a new one
// that is private to you and put it in the USBIO INF file and use it in 
// your application. Refer to the USBIO manual for further instructions.
// The tool guidgen.exe from the Microsoft Platform SDK can be used to create private GUIDs.
//
#define USBIO_IID_STR     "{035B11BB-6213-4a09-ACCE-768B73B3A9A5}"
#define USBIO_IID_STR_W  L"{035B11BB-6213-4a09-ACCE-768B73B3A9A5}"

#define USBIO_IID { 0x35b11bb, 0x6213, 0x4a09, { 0xac, 0xce, 0x76, 0x8b, 0x73, 0xb3, 0xa9, 0xa5}}

//
// USBIO Error Codes
//
#define USBIO_ERR_SUCCESS                              0x00000000L
#define USBIO_ERR_CRC                                  0xE0000001L
#define USBIO_ERR_BTSTUFF                              0xE0000002L
#define USBIO_ERR_DATA_TOGGLE_MISMATCH                 0xE0000003L
#define USBIO_ERR_STALL_PID                            0xE0000004L
#define USBIO_ERR_DEV_NOT_RESPONDING                   0xE0000005L
#define USBIO_ERR_PID_CHECK_FAILURE                    0xE0000006L
#define USBIO_ERR_UNEXPECTED_PID                       0xE0000007L
#define USBIO_ERR_DATA_OVERRUN                         0xE0000008L
#define USBIO_ERR_DATA_UNDERRUN                        0xE0000009L
#define USBIO_ERR_RESERVED1                            0xE000000AL
#define USBIO_ERR_RESERVED2                            0xE000000BL
#define USBIO_ERR_BUFFER_OVERRUN                       0xE000000CL
#define USBIO_ERR_BUFFER_UNDERRUN                      0xE000000DL
#define USBIO_ERR_NOT_ACCESSED                         0xE000000FL
#define USBIO_ERR_FIFO                                 0xE0000010L
#define USBIO_ERR_XACT_ERROR                           0xE0000011L
#define USBIO_ERR_BABBLE_DETECTED                      0xE0000012L
#define USBIO_ERR_DATA_BUFFER_ERROR                    0xE0000013L
                                                    
#define USBIO_ERR_ENDPOINT_HALTED                      0xE0000030L
#define USBIO_ERR_NO_MEMORY                            0xE0000100L
#define USBIO_ERR_INVALID_URB_FUNCTION                 0xE0000200L
#define USBIO_ERR_INVALID_PARAMETER                    0xE0000300L
#define USBIO_ERR_ERROR_BUSY                           0xE0000400L
#define USBIO_ERR_REQUEST_FAILED                       0xE0000500L
#define USBIO_ERR_INVALID_PIPE_HANDLE                  0xE0000600L
#define USBIO_ERR_NO_BANDWIDTH                         0xE0000700L
#define USBIO_ERR_INTERNAL_HC_ERROR                    0xE0000800L
#define USBIO_ERR_ERROR_SHORT_TRANSFER                 0xE0000900L
#define USBIO_ERR_BAD_START_FRAME                      0xE0000A00L
#define USBIO_ERR_ISOCH_REQUEST_FAILED                 0xE0000B00L
#define USBIO_ERR_FRAME_CONTROL_OWNED                  0xE0000C00L
#define USBIO_ERR_FRAME_CONTROL_NOT_OWNED              0xE0000D00L
#define USBIO_ERR_NOT_SUPPORTED                        0xE0000E00L
#define USBIO_ERR_INVALID_CONFIGURATION_DESCRIPTOR     0xE0000F00L

#define USBIO_ERR_INSUFFICIENT_RESOURCES               0xE8001000L
#define USBIO_ERR_SET_CONFIG_FAILED                    0xE0002000L
#define USBIO_ERR_USBD_BUFFER_TOO_SMALL                0xE0003000L
#define USBIO_ERR_USBD_INTERFACE_NOT_FOUND             0xE0004000L
#define USBIO_ERR_INVALID_PIPE_FLAGS                   0xE0005000L
#define USBIO_ERR_USBD_TIMEOUT                         0xE0006000L
#define USBIO_ERR_DEVICE_GONE                          0xE0007000L
#define USBIO_ERR_STATUS_NOT_MAPPED                    0xE0008000L

#define USBIO_ERR_CANCELED                             0xE0010000L
#define USBIO_ERR_ISO_NOT_ACCESSED_BY_HW               0xE0020000L
#define USBIO_ERR_ISO_TD_ERROR                         0xE0030000L
#define USBIO_ERR_ISO_NA_LATE_USBPORT                  0xE0040000L
#define USBIO_ERR_ISO_NOT_ACCESSED_LATE                0xE0050000L
                                                    
#define USBIO_ERR_FAILED                               0xE0001000L
#define USBIO_ERR_INVALID_INBUFFER                     0xE0001001L
#define USBIO_ERR_INVALID_OUTBUFFER                    0xE0001002L
#define USBIO_ERR_OUT_OF_MEMORY                        0xE0001003L
#define USBIO_ERR_PENDING_REQUESTS                     0xE0001004L
#define USBIO_ERR_ALREADY_CONFIGURED                   0xE0001005L
#define USBIO_ERR_NOT_CONFIGURED                       0xE0001006L
#define USBIO_ERR_OPEN_PIPES                           0xE0001007L
#define USBIO_ERR_ALREADY_BOUND                        0xE0001008L
#define USBIO_ERR_NOT_BOUND                            0xE0001009L
#define USBIO_ERR_DEVICE_NOT_PRESENT                   0xE000100AL
#define USBIO_ERR_CONTROL_NOT_SUPPORTED                0xE000100BL
#define USBIO_ERR_TIMEOUT                              0xE000100CL
#define USBIO_ERR_INVALID_RECIPIENT                    0xE000100DL
#define USBIO_ERR_INVALID_TYPE                         0xE000100EL
#define USBIO_ERR_INVALID_IOCTL                        0xE000100FL
#define USBIO_ERR_INVALID_DIRECTION                    0xE0001010L
#define USBIO_ERR_TOO_MUCH_ISO_PACKETS                 0xE0001011L
#define USBIO_ERR_POOL_EMPTY                           0xE0001012L
#define USBIO_ERR_PIPE_NOT_FOUND                       0xE0001013L
#define USBIO_ERR_INVALID_ISO_PACKET                   0xE0001014L
#define USBIO_ERR_OUT_OF_ADDRESS_SPACE                 0xE0001015L
#define USBIO_ERR_INTERFACE_NOT_FOUND                  0xE0001016L
#define USBIO_ERR_INVALID_DEVICE_STATE                 0xE0001017L
#define USBIO_ERR_INVALID_PARAM                        0xE0001018L
#define USBIO_ERR_DEMO_EXPIRED                         0xE0001019L
#define USBIO_ERR_INVALID_POWER_STATE                  0xE000101AL
#define USBIO_ERR_POWER_DOWN                           0xE000101BL
#define USBIO_ERR_VERSION_MISMATCH                     0xE000101CL
#define USBIO_ERR_SET_CONFIGURATION_FAILED             0xE000101DL

#define USBIO_ERR_VID_RESTRICTION                      0xE0001080L
#define USBIO_ERR_ISO_RESTRICTION                      0xE0001081L
#define USBIO_ERR_BULK_RESTRICTION                     0xE0001082L
#define USBIO_ERR_EP0_RESTRICTION                      0xE0001083L
#define USBIO_ERR_PIPE_RESTRICTION                     0xE0001084L
#define USBIO_ERR_PIPE_SIZE_RESTRICTION                0xE0001085L
#define USBIO_ERR_CONTROL_RESTRICTION                  0xE0001086L
#define USBIO_ERR_INTERRUPT_RESTRICTION                0xE0001087L
                                                    
#define USBIO_ERR_DEVICE_NOT_FOUND                     0xE0001100L
#define USBIO_ERR_DEVICE_NOT_OPEN                      0xE0001102L
#define USBIO_ERR_NO_SUCH_DEVICE_INSTANCE              0xE0001104L
#define USBIO_ERR_INVALID_FUNCTION_PARAM               0xE0001105L
#define USBIO_ERR_LOAD_SETUP_API_FAILED                0xE0001106L



//
// USB Standard Device Requests
//

#define IOCTL_USBIO_GET_DESCRIPTOR            _USBIO_IOCTL_CODE(1,METHOD_OUT_DIRECT)
// InBuffer:  USBIO_DESCRIPTOR_REQUEST
// OutBuffer: descriptor data, variable size!

#define IOCTL_USBIO_SET_DESCRIPTOR            _USBIO_IOCTL_CODE(2,METHOD_IN_DIRECT)
// InBuffer:  USBIO_DESCRIPTOR_REQUEST
// OutBuffer: descriptor data, variable size!



#define IOCTL_USBIO_SET_FEATURE               _USBIO_IOCTL_CODE(3,METHOD_BUFFERED)
// InBuffer:  USBIO_FEATURE_REQUEST
// OutBuffer: none

#define IOCTL_USBIO_CLEAR_FEATURE             _USBIO_IOCTL_CODE(4,METHOD_BUFFERED)
// InBuffer:  USBIO_FEATURE_REQUEST
// OutBuffer: none



#define IOCTL_USBIO_GET_STATUS                _USBIO_IOCTL_CODE(5,METHOD_BUFFERED)
// InBuffer:  USBIO_STATUS_REQUEST
// OutBuffer: USBIO_STATUS_REQUEST_DATA



#define IOCTL_USBIO_GET_CONFIGURATION         _USBIO_IOCTL_CODE(6,METHOD_BUFFERED)
// InBuffer:  none
// OutBuffer: USBIO_GET_CONFIGURATION_DATA


#define IOCTL_USBIO_GET_INTERFACE             _USBIO_IOCTL_CODE(7,METHOD_BUFFERED)
// InBuffer:  USBIO_GET_INTERFACE
// OutBuffer: USBIO_GET_INTERFACE_DATA


#define IOCTL_USBIO_STORE_CONFIG_DESCRIPTOR   _USBIO_IOCTL_CODE(8,METHOD_BUFFERED)
// InBuffer:  USB_CONFIGURATION_DESCRIPTOR variable size!
// OutBuffer: none


#define IOCTL_USBIO_SET_CONFIGURATION         _USBIO_IOCTL_CODE(9,METHOD_BUFFERED)
// InBuffer:  USBIO_SET_CONFIGURATION
// OutBuffer: none

#define IOCTL_USBIO_UNCONFIGURE_DEVICE        _USBIO_IOCTL_CODE(10,METHOD_BUFFERED)
// InBuffer:  none
// OutBuffer: none


#define IOCTL_USBIO_SET_INTERFACE             _USBIO_IOCTL_CODE(11,METHOD_BUFFERED)
// InBuffer:  USBIO_INTERFACE_SETTING
// OutBuffer: none



//
// USB Class or Vendor specific Device Requests
//

#define IOCTL_USBIO_CLASS_OR_VENDOR_IN_REQUEST  _USBIO_IOCTL_CODE(12,METHOD_OUT_DIRECT)
// InBuffer:  USBIO_CLASS_OR_VENDOR_REQUEST
// OutBuffer: data, variable size!

#define IOCTL_USBIO_CLASS_OR_VENDOR_OUT_REQUEST _USBIO_IOCTL_CODE(13,METHOD_IN_DIRECT)
// InBuffer:  USBIO_CLASS_OR_VENDOR_REQUEST
// OutBuffer: data, variable size!



//
// Device related Driver Parameters
//

#define IOCTL_USBIO_GET_DEVICE_PARAMETERS       _USBIO_IOCTL_CODE(15,METHOD_BUFFERED)
// InBuffer:  none
// OutBuffer: USBIO_DEVICE_PARAMETERS                                                 

#define IOCTL_USBIO_SET_DEVICE_PARAMETERS       _USBIO_IOCTL_CODE(16,METHOD_BUFFERED)
// InBuffer:  USBIO_DEVICE_PARAMETERS
// OutBuffer: none



//
// Other 
//

#define IOCTL_USBIO_GET_CONFIGURATION_INFO      _USBIO_IOCTL_CODE(20,METHOD_BUFFERED)
// InBuffer:  none
// OutBuffer: USBIO_CONFIGURATION_INFO

#define IOCTL_USBIO_RESET_DEVICE                _USBIO_IOCTL_CODE(21,METHOD_BUFFERED)
// InBuffer:  none
// OutBuffer: none

#define IOCTL_USBIO_GET_CURRENT_FRAME_NUMBER    _USBIO_IOCTL_CODE(22,METHOD_BUFFERED)
// InBuffer:  none
// OutBuffer: USBIO_FRAME_NUMBER


#define IOCTL_USBIO_SET_DEVICE_POWER_STATE      _USBIO_IOCTL_CODE(23,METHOD_BUFFERED)
// InBuffer:  USBIO_DEVICE_POWER
// OutBuffer: none

#define IOCTL_USBIO_GET_DEVICE_POWER_STATE      _USBIO_IOCTL_CODE(24,METHOD_BUFFERED)
// InBuffer:  none
// OutBuffer: USBIO_DEVICE_POWER


#define IOCTL_USBIO_GET_BANDWIDTH_INFO          _USBIO_IOCTL_CODE(25,METHOD_BUFFERED)
// InBuffer:  none
// OutBuffer: USBIO_BANDWIDTH_INFO


#define IOCTL_USBIO_GET_DEVICE_INFO             _USBIO_IOCTL_CODE(26,METHOD_BUFFERED)
// InBuffer:  none
// OutBuffer: USBIO_DEVICE_INFO


#define IOCTL_USBIO_GET_DRIVER_INFO             _USBIO_IOCTL_CODE(27,METHOD_BUFFERED)
// InBuffer:  none
// OutBuffer: USBIO_DRIVER_INFO


#define IOCTL_USBIO_CYCLE_PORT                  _USBIO_IOCTL_CODE(28,METHOD_BUFFERED)
// InBuffer:  none
// OutBuffer: none


//
// Pipe related requests
//

#define IOCTL_USBIO_BIND_PIPE                   _USBIO_IOCTL_CODE(30,METHOD_BUFFERED)
// InBuffer:  USBIO_BIND_PIPE
// OutBuffer: none

#define IOCTL_USBIO_UNBIND_PIPE                 _USBIO_IOCTL_CODE(31,METHOD_BUFFERED)
// InBuffer:  none
// OutBuffer: none



#define IOCTL_USBIO_RESET_PIPE                  _USBIO_IOCTL_CODE(32,METHOD_BUFFERED)
// InBuffer:  none
// OutBuffer: none

#define IOCTL_USBIO_ABORT_PIPE                  _USBIO_IOCTL_CODE(33,METHOD_BUFFERED)
// InBuffer:  none
// OutBuffer: none



#define IOCTL_USBIO_GET_PIPE_PARAMETERS         _USBIO_IOCTL_CODE(35,METHOD_BUFFERED)
// InBuffer:  none
// OutBuffer: USBIO_PIPE_PARAMETERS

#define IOCTL_USBIO_SET_PIPE_PARAMETERS         _USBIO_IOCTL_CODE(36,METHOD_BUFFERED)
// InBuffer:  USBIO_PIPE_PARAMETERS
// OutBuffer: none


#define IOCTL_USBIO_SETUP_PIPE_STATISTICS        _USBIO_IOCTL_CODE(37,METHOD_BUFFERED)
// InBuffer:  USBIO_SETUP_PIPE_STATISTICS
// OutBuffer: none


#define IOCTL_USBIO_QUERY_PIPE_STATISTICS        _USBIO_IOCTL_CODE(38,METHOD_BUFFERED)
// InBuffer:  USBIO_QUERY_PIPE_STATISTICS
// OutBuffer: USBIO_PIPE_STATISTICS



#define IOCTL_USBIO_PIPE_CONTROL_TRANSFER_IN    _USBIO_IOCTL_CODE(40,METHOD_OUT_DIRECT)
// InBuffer:  USBIO_PIPE_CONTROL_TRANSFER
// OutBuffer: data, variable size!

#define IOCTL_USBIO_PIPE_CONTROL_TRANSFER_OUT   _USBIO_IOCTL_CODE(41,METHOD_IN_DIRECT)
// InBuffer:  USBIO_PIPE_CONTROL_TRANSFER
// OutBuffer: data, variable size!



//
// options (device related)
//
#define USBIO_RESET_DEVICE_ON_CLOSE   0x00000001
#define USBIO_UNCONFIGURE_ON_CLOSE    0x00000002
#define USBIO_ENABLE_REMOTE_WAKEUP    0x00000004

//
// flags (pipe related)
//
#define USBIO_SHORT_TRANSFER_OK       0x00010000
#define USBIO_START_TRANSFER_ASAP     0x00020000

//
// max array size
//
#define USBIO_MAX_INTERFACES      32
#define USBIO_MAX_PIPES           32



// pack the following structures                                                     
#include <PSHPACK1.H>


typedef enum _USBIO_PIPE_TYPE {
  PipeTypeControl = 0,
  PipeTypeIsochronous,
  PipeTypeBulk,
  PipeTypeInterrupt,
  // The following dummy value is included to force the compiler to make the 
  // size of the enum 4 bytes (32 bits). Some compilers, Borland C++ for 
  // instance, use the smallest possible integer for enums.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -