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

📄 ezusbdeviceioctl.h

📁 DriverStdio的一个USB驱动程序
💻 H
字号:
// EzUsbDeviceIoctl.h
//=============================================================================
//
// Compuware Corporation
// NuMega Lab
// 9 Townsend West
// Nashua, NH 03060  USA
//
// Copyright (c) 1999 Compuware Corporation. All Rights Reserved.
// Unpublished - rights reserved under the Copyright laws of the
// United States.
//
//=============================================================================

#ifndef __EzUsbDeviceIoctl__h_
#define __EzUsbDeviceIoctl__h_

//====================================================================================================================
// The following are the I/O control codes that this driver supports
//
#define IOCTL_EZUSB_GET_PIPE_INFO			CTL_CODE( FILE_DEVICE_UNKNOWN, 0x800, METHOD_BUFFERED,   FILE_ANY_ACCESS )
#define IOCTL_EZUSB_GET_DEVICE_DESCRIPTOR	CTL_CODE( FILE_DEVICE_UNKNOWN, 0x801, METHOD_BUFFERED,   FILE_ANY_ACCESS )
#define IOCTL_EZUSB_GET_CONFIG_DESCRIPTOR	CTL_CODE( FILE_DEVICE_UNKNOWN, 0x802, METHOD_BUFFERED,   FILE_ANY_ACCESS )
#define IOCTL_EZUSB_VENDOR_REQUEST			CTL_CODE( FILE_DEVICE_UNKNOWN, 0x805, METHOD_BUFFERED,   FILE_ANY_ACCESS )
#define IOCTL_EZUSB_ANCHOR_DOWNLOAD2		CTL_CODE( FILE_DEVICE_UNKNOWN, 0x807, METHOD_BUFFERED,   FILE_ANY_ACCESS )
#define IOCTL_EZUSB_RESET					CTL_CODE( FILE_DEVICE_UNKNOWN, 0x80C, METHOD_IN_DIRECT,  FILE_ANY_ACCESS )
#define IOCTL_EZUSB_RESETPIPE				CTL_CODE( FILE_DEVICE_UNKNOWN, 0x80D, METHOD_IN_DIRECT,  FILE_ANY_ACCESS )
#define IOCTL_EZUSB_ABORTPIPE				CTL_CODE( FILE_DEVICE_UNKNOWN, 0x80F, METHOD_IN_DIRECT,  FILE_ANY_ACCESS )
#define IOCTL_EZUSB_SETINTERFACE			CTL_CODE( FILE_DEVICE_UNKNOWN, 0x810, METHOD_BUFFERED,   FILE_ANY_ACCESS )
#define IOCTL_EZUSB_GET_STRING_DESCRIPTOR	CTL_CODE( FILE_DEVICE_UNKNOWN, 0x811, METHOD_BUFFERED,   FILE_ANY_ACCESS )
#define IOCTL_EZUSB_BULK_READ				CTL_CODE( FILE_DEVICE_UNKNOWN, 0x813, METHOD_OUT_DIRECT, FILE_ANY_ACCESS )
#define IOCTL_EZUSB_BULK_WRITE				CTL_CODE( FILE_DEVICE_UNKNOWN, 0x814, METHOD_IN_DIRECT,  FILE_ANY_ACCESS )
#define IOCTL_EZUSB_GET_CURRENT_FRAME_NUM	CTL_CODE( FILE_DEVICE_UNKNOWN, 0x815, METHOD_BUFFERED,   FILE_ANY_ACCESS )
#define IOCTL_EZUSB_VENDOR_OR_CLASS_REQUEST	CTL_CODE( FILE_DEVICE_UNKNOWN, 0x816, METHOD_IN_DIRECT,  FILE_ANY_ACCESS )
#define IOCTL_EZUSB_GET_LAST_ERROR			CTL_CODE( FILE_DEVICE_UNKNOWN, 0x817, METHOD_BUFFERED,   FILE_ANY_ACCESS )
#define IOCTL_EZUSB_ISO_READ				CTL_CODE( FILE_DEVICE_UNKNOWN, 0x819, METHOD_OUT_DIRECT, FILE_ANY_ACCESS )
#define IOCTL_EZUSB_ISO_WRITE				CTL_CODE( FILE_DEVICE_UNKNOWN, 0x81A, METHOD_IN_DIRECT,	 FILE_ANY_ACCESS )
#define IOCTL_EZUSB_ANCHOR_DOWNLOAD			CTL_CODE( FILE_DEVICE_UNKNOWN, 0x81B, METHOD_IN_DIRECT,  FILE_ANY_ACCESS ) 
#define IOCTL_EZUSB_GET_DRIVER_VERSION		CTL_CODE( FILE_DEVICE_UNKNOWN, 0x81D, METHOD_BUFFERED,   FILE_ANY_ACCESS )
#define IOCTL_EZUSB_START_ISO_STREAM		CTL_CODE( FILE_DEVICE_UNKNOWN, 0x81E, METHOD_BUFFERED,   FILE_ANY_ACCESS )
#define IOCTL_EZUSB_STOP_ISO_STREAM			CTL_CODE( FILE_DEVICE_UNKNOWN, 0x81F, METHOD_BUFFERED,   FILE_ANY_ACCESS )
#define IOCTL_EZUSB_READ_ISO_BUFFER			CTL_CODE( FILE_DEVICE_UNKNOWN, 0x820, METHOD_OUT_DIRECT, FILE_ANY_ACCESS )

// The following are unsupported I/O control codes (for future)

//#define IOCTL_EZUSB_BULK_OR_INTERRUPT_WRITE CTL_CODE( FILE_DEVICE_UNKNOWN, 0x803, METHOD_BUFFERED,   FILE_ANY_ACCESS )
//#define IOCTL_EZUSB_BULK_OR_INTERRUPT_READ  CTL_CODE( FILE_DEVICE_UNKNOWN, 0x804, METHOD_BUFFERED,   FILE_ANY_ACCESS )
//#define IOCTL_EZUSB_GET_CURRENT_CONFIG	  CTL_CODE( FILE_DEVICE_UNKNOWN, 0x806, METHOD_BUFFERED,   FILE_ANY_ACCESS )


//=============================================================================
// The following are required data structures used for DeviceIoControl.
// Applications will pass data to the driver using these data structures


// This data structure is used for IOCTL_EZUSB_VENDOR_REQUEST
typedef struct _VENDOR_REQUEST_IN
{
	UCHAR  bRequest;
	USHORT wValue;
	USHORT wIndex;
	USHORT wLength;
	UCHAR  direction;
	UCHAR  bData;

} VENDOR_REQUEST_IN, *PVENDOR_REQUEST_IN;


// This data structure is used for IOCTL_EZUSB_SETINTERFACE
typedef struct _SET_INTERFACE_IN
{
	UCHAR interfaceNum;
	UCHAR alternateSetting;

} SET_INTERFACE_IN, *PSET_INTERFACE_IN;


// This data structure is used for IOCTL_EZUSB_GET_STRING_DESCRIPTOR
typedef struct _GET_STRING_DESCRIPTOR_IN
{
	UCHAR  Index;
	USHORT LanguageId;

} GET_STRING_DESCRIPTOR_IN, *PGET_STRING_DESCRIPTOR_IN;


// This data structure is used for IOCTL_EZUSB_BULK_READ and IOCTL_EZUSB_BULK_WRITE
typedef struct _BULK_TRANSFER_CONTROL
{
	ULONG pipeNum;

} BULK_TRANSFER_CONTROL, *PBULK_TRANSFER_CONTROL;


// This data structure is used for IOCTL_EZUSB_VENDOR_OR_CLASS_REQUEST
typedef struct _VENDOR_OR_CLASS_REQUEST_CONTROL
{
	UCHAR  direction;
	UCHAR  requestType;
	UCHAR  recepient;
	UCHAR  requestTypeReservedBits;
	UCHAR  request;
	USHORT value;
	USHORT index;

} VENDOR_OR_CLASS_REQUEST_CONTROL, *PVENDOR_OR_CLASS_REQUEST_CONTROL;


// This data structure is used for IOCTL_EZUSB_READ_ISO_BUFFER, IOCTL_EZUSB_ISO_READ,
// IOCTL_EZUSB_ISO_WRITE, and IOCTL_EZUSB_START_ISO_STREAM
typedef struct _ISO_TRANSFER_CONTROL
{
	ULONG PipeNum;
	ULONG PacketSize;
	ULONG PacketCount;
	ULONG FramesPerBuffer;     
	ULONG BufferCount;         

} ISO_TRANSFER_CONTROL, *PISO_TRANSFER_CONTROL;


// This data structure is used for IOCTL_EZUSB_ANCHOR_DOWNLOAD
typedef struct _ANCHOR_DOWNLOAD_CONTROL
{
	USHORT Offset;

} ANCHOR_DOWNLOAD_CONTROL, *PANCHOR_DOWNLOAD_CONTROL;


// This data structure is used for IOCTL_EZUSB_GET_DRIVER_VERSION
typedef struct _EZUSB_DRIVER_VERSION
{
	USHORT MajorVersion;
	USHORT MinorVersion;
	USHORT BuildVersion;

} EZUSB_DRIVER_VERSION, *PEZUSB_DRIVER_VERSION;

#define EZUSB_MAJOR_VERSION		01
#define EZUSB_MINOR_VERSION		01
#define EZUSB_BUILD_VERSION		0000


#endif // __EzUsbDeviceIoctl__h_

⌨️ 快捷键说明

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