📄 usbio_i.h
字号:
/************************************************************************
*
* 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 + -