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

📄 usbif.h

📁 44b0上usb应用程序实例
💻 H
字号:
//usbif.h
#ifndef _USBIF_H_
#define _USBIF_H_

#include "devioctl.h"

#define USC unsigned char
#define FALSE 0
#define TRUE 1

//定义都是针对主控制器的
#define hReadPipe1   0		//endpoint 1, IN
#define hWritePipe1  1		//endpoint 2, OUT

#define hReadPipe2   2		//endpoint 3, IN
#define hWritePipe2  3		//endpoint 4, OUT

#define hReadPipe3   4		//endpoint 5, IN
#define hWritePipe3  5		//endpoint 6, OUT

#define kMaxNumInstances 999

typedef struct _BULK_TRANSFER_CONTROL
{
   ULONG pipeNum;
} BULK_TRANSFER_CONTROL, *PBULK_TRANSFER_CONTROL;


#define Ezusb_IOCTL_INDEX  0x0800

//
// Perform an IN transfer over the specified bulk or interrupt pipe.
//
// lpInBuffer: BULK_TRANSFER_CONTROL stucture specifying the pipe number to read from
// nInBufferSize: sizeof(BULK_TRANSFER_CONTROL)
// lpOutBuffer: Buffer to hold data read from the device.  
// nOutputBufferSize: size of lpOutBuffer.  This parameter determines
//    the size of the USB transfer.
// lpBytesReturned: actual number of bytes read
// 
#define IOCTL_EVK_BULK_READ             CTL_CODE(FILE_DEVICE_UNKNOWN,  \
                                                   Ezusb_IOCTL_INDEX+19,\
                                                   METHOD_OUT_DIRECT,  \
                                                   FILE_ANY_ACCESS)

//
// Perform an OUT transfer over the specified bulk or interrupt pipe.
//
// lpInBuffer: BULK_TRANSFER_CONTROL stucture specifying the pipe number to write to
// nInBufferSize: sizeof(BULK_TRANSFER_CONTROL)
// lpOutBuffer: Buffer of data to write to the device
// nOutputBufferSize: size of lpOutBuffer.  This parameter determines
//    the size of the USB transfer.
// lpBytesReturned: actual number of bytes written
// 
#define IOCTL_EVK_BULK_WRITE            CTL_CODE(FILE_DEVICE_UNKNOWN,  \
                                                   Ezusb_IOCTL_INDEX+20,\
                                                   METHOD_IN_DIRECT,  \
                                                   FILE_ANY_ACCESS)




//
// Returns driver version information
//
// lpInBuffer: NULL
// nInBufferSize: 0
// lpOutBuffer: PEZUSB_DRIVER_VERSION
// nOutputBufferSize: sizeof(EZUSB_DRIVER_VERSION)
// 
#define IOCTL_EZUSB_GET_DRIVER_VERSION   CTL_CODE(FILE_DEVICE_UNKNOWN,  \
                                                   Ezusb_IOCTL_INDEX+29,\
                                                   METHOD_BUFFERED,  \
                                                   FILE_ANY_ACCESS)




///


//底下3个函数是最最重要的,其他函数都建立在这个基础上的。
//******************************************************************
//function: hOpenDevice
//parameter: HANDLE *hDevcieHandle  ----保存打开的设备句柄
//purpose : 对设备任何的操作之前都要调用这个函数,来开启设备
//return  : 成功, 返回TRUE;  失败,返回FALSE         
//*******************************************************************  
int  hOpenDevice( HANDLE *hDeviceHandle );

//************************************************************************
//function: hCloseDevice
//parameter:HANDLE *hDeviceHandle  ------hOpenDevice 打开的设备句柄
//purpose :  读写等操作完以后,要调用此函数来关闭
//           由hOpenDevice 函数打开的设备
//return:   关闭成功,返回 TRUE, 失败,返回FALSE
//************************************************************************
 int  hCloseDevice( HANDLE *hDeviceHandle );

//*************************************************************
//function:hUSBIO
//purpose: 读取 或发送数据.这里采用的是这样一种策略,读写超过64字节,
//         那么分成64大小的块。
//return: 成功传输,返回TRUE; 失败, 返FALSE.
//**************************************************************
int  hUSBIO(HANDLE *hDeviceHandle,
			USC* hDataBuffer,
			int hDataLength,	
			int hPipeNumber,
			int hReadWrite);         //TRUE means Read


#endif _USBIF_H_  //endof 

⌨️ 快捷键说明

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