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

📄 funfile.cpp

📁 把USB接口做成动态连接库的代码
💻 CPP
字号:
#include "stdafx.h"
#include "ezusbsys.h"

#include "winioctl.h"
#include "usb100.h"
#include "usbdi.h"
unsigned char BulkReadData[8];
unsigned char BulkWriteData[8];

HANDLE hOpenDevice()
{
	HANDLE hDevice=0;
	hDevice=CreateFile("\\\\.\\Ezusb-0",
							GENERIC_READ|GENERIC_WRITE,
							FILE_SHARE_READ|FILE_SHARE_WRITE,
							NULL,
							OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL
							);
		if(!(hDevice&&(~((int)hDevice))))
	{
		hDevice=0;
		return hDevice;
	}
	return hDevice;
}
unsigned char *GetPipeInfo(HANDLE hDriver)
{
	static USBD_INTERFACE_INFORMATION PipeInfo;
	int BytesTxd;
	if(!DeviceIoControl(
		hDriver,
		IOCTL_Ezusb_GET_PIPE_INFO,
		NULL,0,
		(LPVOID)&PipeInfo,sizeof(USBD_INTERFACE_INFORMATION),
		(LPDWORD)&BytesTxd,NULL
		))
		return NULL;
	else
		return (unsigned char *)(&PipeInfo);
}
int BulkRead(HANDLE hDriver)
{		int BytesTxd;
		BULK_TRANSFER_CONTROL bulkcontrol;
		bulkcontrol.pipeNum=0;
	if(!DeviceIoControl(
		hDriver,
		IOCTL_EZUSB_BULK_READ,
		(LPVOID)&bulkcontrol,sizeof(BULK_TRANSFER_CONTROL),
		(LPVOID)BulkReadData,8,
		(LPDWORD)&BytesTxd,NULL))
	return 0;
	else return 1;
}
int BulkWrite(HANDLE hDriver)
{
		int BytesTxd;
		BULK_WRITE_CONTROL bulkcontrol;
		bulkcontrol.pipeNum=1;
		for(int i=0;i<8;i++)
			bulkcontrol.data[i]=BulkWriteData[i];
	if(!DeviceIoControl(
		hDriver,
		IOCTL_EZUSB_WRITE,
		(LPVOID)&bulkcontrol,sizeof(BULK_WRITE_CONTROL),
		NULL,0,
		(LPDWORD)&BytesTxd,NULL))
	return 0;
	else return 1;	
}

int Reset8051Hold(HANDLE hDriver)
{
	int BytesTxd;
	if(!DeviceIoControl(
		hDriver,
		IOCTL_8051_RESET_HOLD,
		NULL,0,
		NULL,0,
		(LPDWORD)&BytesTxd,NULL))
	return 0;
	else return 1;	
}
	

int Reset8051Free(HANDLE hDriver)
{
	int BytesTxd;
	if(!DeviceIoControl(
		hDriver,
		IOCTL_8051_RESET_FREE,
		NULL,0,
		NULL,0,
		(LPDWORD)&BytesTxd,NULL))
	return 0;
	else return 1;	

}

int VendorCmmd(HANDLE hDriver,int swa,int swb)
{
	VENDOR_OR_CLASS_REQUEST_CONTROL vmd;
	vmd.requestType =2;//2 vendor
	vmd.recepient=0;// recipient (0=device,1=interface,2=endpoint,3=other)
	vmd.request=0xb0;
	vmd.direction=0;//out
	vmd.index=1;
	vmd.value=0;
	if(swa) vmd.value=1;
	if(swb) vmd.value+=2;
	UINT inLength=sizeof(VENDOR_OR_CLASS_REQUEST_CONTROL);

	UINT BytesTxd;
	if(!DeviceIoControl(
		hDriver,
		IOCTL_EZUSB_VENDOR_OR_CLASS_REQUEST,
		(LPVOID )&vmd,inLength,
		NULL,0,
		(LPDWORD )&BytesTxd,NULL))
	{
		return 0 ;
	}
	else
	return 1;

}

int CloseDevice(HANDLE hDriver)
{
	if(CloseHandle(hDriver))
		return 1;
	else 
		return 0;
}

⌨️ 快捷键说明

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