亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? termsdriver.c.bak

?? hid類usb對外設的驅動application
?? BAK
?? 第 1 頁 / 共 2 頁
字號:
#include <stdlib.h>
#include <stdio.h>
#include <windows.h>
#include "hidsdi.h"
#include <setupapi.h>
#include <malloc.h>
#include "TermsDriver.h"

#define TermsDriver(foo) Java_TermsDriver_ ## foo
//------------讀寫事件,用于檢測超時時間內的動作-----------
HANDLE ReadEventObject;
HANDLE WriteEventObject;
//---------------------------------------------------------

HANDLE TermsDriver(hcom)=NULL;

//---------------打印設備與HID設備的GUID-------------------
GUID DeviceGuid;
//---------------------------------------------------------

//---------------HID設備的能力描述符-----------------------
HIDP_CAPS Capabilities;
//---------------------------------------------------------

//---------------設備接口細節------------------------------
PSP_DEVICE_INTERFACE_DETAIL_DATA DetailData;
//---------------------------------------------------------

//---------------非阻塞讀寫標志----------------------------
OVERLAPPED HIDOverlappedRead; 
OVERLAPPED HIDOverlappedWrite;
//---------------------------------------------------------

//---------------獲得HID設備能力---------------------------
void GetDeviceCapabilities(){
	PHIDP_PREPARSED_DATA PreparsedData;						//預解析數據,裝載設備能力的描述
	HidD_GetPreparsedData(TermsDriver(hcom),&PreparsedData);
	HidP_GetCaps(PreparsedData,&Capabilities);				//將預解析數據填入設備能力描述符結構體中
	HidD_FreePreparsedData(PreparsedData);					//釋放資源
}
//---------------------------------------------------------

//---------------HID設備傳輸有阻塞的可能,該函數為非阻塞模式傳輸定義事件------
void PreparedForOverlappedTransfer(){

    if(ReadEventObject==NULL){
		ReadEventObject=CreateEvent(NULL,TRUE,TRUE,"");
		HIDOverlappedRead.hEvent=ReadEventObject;
        HIDOverlappedRead.Offset=0;
		HIDOverlappedRead.OffsetHigh=0;
    }
	if(WriteEventObject==NULL){
		WriteEventObject=CreateEvent(NULL,TRUE,TRUE,"");
		HIDOverlappedWrite.hEvent=WriteEventObject;
        HIDOverlappedWrite.Offset=0;
		HIDOverlappedWrite.OffsetHigh=0;
    }
}
//----------------------------------------------------------------------------

//----------------當printFlag為TRUE時尋找打印設備,否則尋找HID類設備----------
//----------------找尋設備一共分為8步-----------------------------------------

//	1、獲取對應的USB類設備的GUID
//	2、獲得擁有該GUID類的設備的集合
//	3、遍歷設備集合里每一個設備的接口標識
//	4、獲取每一個標識下接口的詳細數據結構
//	5、獲取設備路徑,打開設備
//	6、獲得設備的字符串描述符
//	7、與既定規則進行比較
//	8、如果不符合,關閉設備,繼續尋找;如果符合,繼續操作。
//---------------------------------------------------------------------------

BOOL SearchDevices(byte deviceType[],BOOL printFlag){
	HIDD_ATTRIBUTES attributes;
	BOOL LastDevice=FALSE;
	BOOL DeviceDetected=FALSE;
	long Required;
	HANDLE hDevInfo;
	SP_DEVICE_INTERFACE_DATA DevInfoData;
	int Length,i,MemberIndex,Result;
	char tmpStr[128];
	char str[64];
	char str1[10];

	memset(tmpStr,0x00,128);
	memset(str,0x00,64);
	memset(str1,0x00,10);

	if(printFlag==TRUE){

		//--------獲取Print類設備的GUID---------
		DeviceGuid.Data1 = 0x28d78fad;
		DeviceGuid.Data2 = 0x5a12;
		DeviceGuid.Data3 = 0x11D1;
		DeviceGuid.Data4[0] = 0xae;
		DeviceGuid.Data4[1] = 0x5b;
		DeviceGuid.Data4[2] = 0x00;
		DeviceGuid.Data4[3] = 0x00;
		DeviceGuid.Data4[4] = 0xf8;
		DeviceGuid.Data4[5] = 0x03;
		DeviceGuid.Data4[6] = 0xa8;
		DeviceGuid.Data4[7] = 0xc2;
		//--------------------------------------

		//-------獲得指定類的設備集合-----------
		hDevInfo=SetupDiGetClassDevs(&DeviceGuid,NULL,NULL,DIGCF_PRESENT|DIGCF_DEVICEINTERFACE);
		//--------------------------------------

		DevInfoData.cbSize=sizeof(DevInfoData);
		MemberIndex=0;
		LastDevice=FALSE;

		//-------遍歷該類下每一個設備-----------
		do{
			//---獲取設備的標識結構-------------
			Result=SetupDiEnumDeviceInterfaces(hDevInfo,
				0,
				&DeviceGuid,
				MemberIndex,
				&DevInfoData);

			if(Result!=0){

				//---獲得用于分配PSP_DEVICE_INTERFACE_DETAIL_DATA的空間的長度---
				Result=SetupDiGetDeviceInterfaceDetail(hDevInfo,
					&DevInfoData,
					NULL,
					0,
					&Length,
					NULL);

				//---獲得接口的詳細數據結構---
				DetailData=(PSP_DEVICE_INTERFACE_DETAIL_DATA)malloc(Length);
				DetailData->cbSize=sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
				Result=SetupDiGetDeviceInterfaceDetail(hDevInfo,
					&DevInfoData,
					DetailData,
					Length,
					&Required,
					NULL);

				//----獲取設備路徑,以獨占、非阻塞方式打開設備----
				//----以非阻塞方式打開USB口設備-------------------
				TermsDriver(hcom)=CreateFile(DetailData->DevicePath,
					GENERIC_READ|GENERIC_WRITE,
					FILE_SHARE_READ|FILE_SHARE_WRITE,
					NULL,
					OPEN_EXISTING,
					FILE_FLAG_OVERLAPPED,
					NULL);

				//-----獲得廠商字符串,然后進行比較-----
				HidD_GetManufacturerString(TermsDriver(hcom),
						tmpStr,
						128);

				//-----將Unicode編碼轉化為ASCII碼-------
				for(i=0;i<64;i++){
					str[i]=tmpStr[2*i];
				}
				//--------------------------------------
				str1[0]=str[12];// I
				str1[1]=str[13];// C
				str1[2]=str[14];// B
				str1[3]=str[15];// C

				//----------------比較細則--------------
				if(strcmp(deviceType,"pr2")==0||strcmp(deviceType,"Ar2400")==0){
					str1[4]=str[16];
					if(strcmp(str1,"ICBC1")==0||strcmp(str1,"ICBC0")==0){
						DeviceDetected=TRUE;
						PreparedForOverlappedTransfer();
					}
				}else{ 
					if(strcmp(deviceType,"scanner")==0){
						str1[4]=str[16];
						if(strcmp(str1,"ICBC2")==0){
							DeviceDetected=TRUE;
							PreparedForOverlappedTransfer();
						}else{ 
							if(strcmp(str1,"ICBC0")==0){
								str1[5]=str[17];
								if(strcmp(str1,"ICBC01")==0){
									DeviceDetected=TRUE;
									PreparedForOverlappedTransfer();
								}else{
									CloseHandle(TermsDriver(hcom));
								}
							}else {
								CloseHandle(TermsDriver(hcom));
							}
						}
					}
				}
				//--------------------------------------------------
			free(DetailData);
			}else
				LastDevice=TRUE;
			MemberIndex=MemberIndex+1;
		}while(LastDevice!=FALSE&&DeviceDetected!=FALSE);
		SetupDiDestroyDeviceInfoList(hDevInfo);
		return DeviceDetected;
	}else{
		//------------------尋找HID類設備--------------------
		memset(tmpStr,0x00,128);
		memset(str,0x00,64);
		memset(str1,0x00,10);
		LastDevice=FALSE;
		DeviceDetected=FALSE;
		MemberIndex=0;
		Result=0;
		Length=0;
		i=0;

		TermsDriver(hcom)=NULL;

		//獲得HID類型設備的Guid
		HidD_GetHidGuid(&DeviceGuid);

		hDevInfo=SetupDiGetClassDevs(&DeviceGuid,NULL,NULL,DIGCF_PRESENT|DIGCF_DEVICEINTERFACE);
		DevInfoData.cbSize=sizeof(DevInfoData);
		do
		{
			Result=SetupDiEnumDeviceInterfaces(hDevInfo,
				0,
				&DeviceGuid,
				MemberIndex,
			    &DevInfoData);
			if(Result!=0){
				Result=SetupDiGetDeviceInterfaceDetail(hDevInfo,
					&DevInfoData,
					NULL,
					0,
					&Length,
					NULL);

				DetailData=(PSP_DEVICE_INTERFACE_DETAIL_DATA)malloc(Length);
				DetailData->cbSize=sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);

				Result=SetupDiGetDeviceInterfaceDetail(hDevInfo,
					&DevInfoData,
					DetailData,
					Length,
					&Required,
					NULL);

				TermsDriver(hcom)=CreateFile(DetailData->DevicePath,
					GENERIC_READ|GENERIC_WRITE,
					FILE_SHARE_READ|FILE_SHARE_WRITE,
					NULL,
					OPEN_EXISTING,
					FILE_FLAG_OVERLAPPED,
					NULL);

				attributes.Size=sizeof(attributes);
				DeviceDetected=FALSE;

				Result=HidD_GetAttributes(TermsDriver(hcom),&attributes);
				HidD_GetManufacturerString(TermsDriver(hcom),
					tmpStr,
					128);
				for(i=0;i<64;i++){
					str[i]=tmpStr[2*i];
				}
				str1[0]=str[12];
				str1[1]=str[13];
				str1[2]=str[14];
				str1[3]=str[15];
				if(strcmp(deviceType,"pinkey")==0){
					str1[4]=str[16];
					if(strcmp(str1,"ICBC1")==0){
						DeviceDetected=1;
					    GetDeviceCapabilities();
					    PreparedForOverlappedTransfer();
					}
					else 
						if(strcmp(str1,"ICBC0")==0){
							str1[5]=str[17];
							if(strcmp(str1,"ICBC01")==0){
								DeviceDetected=1;
								GetDeviceCapabilities();
								PreparedForOverlappedTransfer();
							}else{
								CloseHandle(TermsDriver(hcom));
							}
						}
				}
				if(strcmp(deviceType,"MSFDriver")==0){
					str1[4]=str[16];
					if(strcmp(str1,"ICBC2")==0){
						DeviceDetected=1;
					    GetDeviceCapabilities();
					    PreparedForOverlappedTransfer();
					}
					else 
						if(strcmp(str1,"ICBC0")==0){
							str1[5]='0';
							str1[6]=str[18];
							if((strcmp(str1,"ICBC011")==0)||(strcmp(str1,"ICBC001")==0)){
								DeviceDetected=1;
								GetDeviceCapabilities();
								PreparedForOverlappedTransfer();
							}else{
								CloseHandle(TermsDriver(hcom));
							}
						}
				}
				if(strcmp(deviceType,"ICCard")==0){
					str1[4]=str[16];
					if(strcmp(str1,"ICBC3")==0){
						DeviceDetected=TRUE;
					    GetDeviceCapabilities();
					    PreparedForOverlappedTransfer();
					}
					else 
						if(strcmp(str1,"ICBC0")==0){
							str1[5]='0';
							str1[6]=str[19];
							if(str[6]=='1'){
								DeviceDetected=TRUE;
								GetDeviceCapabilities();
								PreparedForOverlappedTransfer();
							}else{
								CloseHandle(TermsDriver(hcom));
							}
						}
				}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线视频观看一区| 91福利在线看| 在线影院国内精品| 欧美大片在线观看一区| 国产精品二区一区二区aⅴ污介绍| 亚洲夂夂婷婷色拍ww47| 成人午夜免费av| 欧美一区二区在线看| 亚洲三级电影网站| 国产一区中文字幕| 337p亚洲精品色噜噜| 亚洲欧美国产毛片在线| 国产99精品视频| 日韩精品一区二区三区三区免费| 一区二区三区四区不卡视频| 国产成人精品三级麻豆| 日韩欧美一区二区免费| 亚洲成av人在线观看| 99久久综合色| 国产精品乱人伦| 国产精品一区二区在线观看不卡| 8v天堂国产在线一区二区| 成人免费在线观看入口| 成人国产精品免费网站| 国产欧美精品在线观看| 国产伦精品一区二区三区视频青涩 | 亚洲已满18点击进入久久| 成人做爰69片免费看网站| 欧美精品一区二区在线播放| 毛片av一区二区| 日韩亚洲电影在线| 人妖欧美一区二区| 日韩视频在线观看一区二区| 奇米影视7777精品一区二区| 欧美午夜在线一二页| 亚洲综合图片区| 欧美日韩国产三级| 日本aⅴ精品一区二区三区| 日韩视频在线永久播放| 国产综合色在线视频区| 国产欧美一区二区三区鸳鸯浴 | 国产欧美精品在线观看| 丁香激情综合五月| 国产精品女上位| 色婷婷激情综合| 亚洲午夜av在线| 91精品国产综合久久蜜臀 | 不卡电影免费在线播放一区| 中文字幕制服丝袜一区二区三区| av中文字幕在线不卡| 亚洲另类在线一区| 欧美人妇做爰xxxⅹ性高电影| 石原莉奈在线亚洲二区| 欧美白人最猛性xxxxx69交| 国产一区欧美一区| 国产欧美一区二区三区在线看蜜臀| 9i看片成人免费高清| 亚洲国产视频一区| 日韩欧美综合一区| 成人午夜私人影院| 亚洲午夜久久久久| 国产亚洲一区二区三区在线观看 | 国产乱对白刺激视频不卡| 综合网在线视频| 7777精品久久久大香线蕉| 久久国产精品99久久久久久老狼| 国产亚洲欧美激情| 在线免费不卡视频| 国产精品主播直播| 亚洲午夜羞羞片| 国产清纯白嫩初高生在线观看91 | 天堂在线亚洲视频| 国产三级欧美三级日产三级99| 99re视频这里只有精品| 蜜臀久久99精品久久久画质超高清| 久久男人中文字幕资源站| av综合在线播放| 韩国精品主播一区二区在线观看 | 亚洲三级免费观看| 91精品欧美综合在线观看最新| 国产另类ts人妖一区二区| 亚洲成av人片在线观看无码| 国产美女在线精品| 日本一区二区视频在线观看| 欧美日韩色一区| 成人自拍视频在线| 日韩综合在线视频| 国产精品久久久久四虎| 日韩免费一区二区| 在线看国产一区二区| 韩国av一区二区三区在线观看| 成人欧美一区二区三区小说| 欧美大片拔萝卜| 91小视频免费观看| 国产精品1区二区.| 天天影视涩香欲综合网| 国产精品美女久久久久久久网站| 欧美一区二区三区免费在线看| 一本一道久久a久久精品| 国产成人一区在线| 久久av老司机精品网站导航| 亚洲国产sm捆绑调教视频| 国产精品久久久久9999吃药| 久久亚洲精精品中文字幕早川悠里 | 国产精品996| 蜜臀av亚洲一区中文字幕| 亚洲不卡一区二区三区| 亚洲精品国产无天堂网2021| 国产精品久久久一本精品| 久久精品日产第一区二区三区高清版| 欧美一卡二卡三卡| 欧美精品日韩精品| 欧美美女网站色| 欧美三级中文字幕在线观看| 在线观看视频一区| 欧美伊人久久大香线蕉综合69| 色综合色综合色综合色综合色综合 | 亚洲女人小视频在线观看| 日韩一区在线免费观看| 亚洲色图在线视频| 亚洲精品ww久久久久久p站| 日韩美女啊v在线免费观看| 亚洲欧美自拍偷拍| 亚洲激情校园春色| 亚洲午夜精品网| 奇米色一区二区三区四区| 精品一区二区三区免费| 国产一区不卡精品| 成人高清在线视频| 91麻豆免费观看| 欧美精品久久99久久在免费线| 555www色欧美视频| 亚洲精品一区二区三区99| 欧美极品少妇xxxxⅹ高跟鞋| 国产精品电影院| 亚洲第一主播视频| 麻豆传媒一区二区三区| 国产成人欧美日韩在线电影| 91毛片在线观看| 日韩一区二区不卡| 国产精品全国免费观看高清| 亚洲欧美日韩一区| 日本vs亚洲vs韩国一区三区二区 | 蜜臀av亚洲一区中文字幕| 欧美在线制服丝袜| 国产成人夜色高潮福利影视| 国产一区二区福利视频| 看电影不卡的网站| 激情五月播播久久久精品| 国产盗摄视频一区二区三区| 中文字幕 久热精品 视频在线| 日韩一区二区三区电影在线观看| 福利一区福利二区| 一区二区三区在线视频免费 | 亚洲成人免费在线| 五月婷婷激情综合网| 中文字幕一区二区三区av| 一道本成人在线| 亚洲国产综合色| 国产精品一区二区三区四区| 欧美日精品一区视频| 在线不卡一区二区| 久久久五月婷婷| 亚洲精品第1页| 亚洲一区二区三区在线播放| 91国模大尺度私拍在线视频| 在线成人免费视频| 亚洲午夜av在线| 在线播放中文一区| 美女视频黄 久久| 欧美优质美女网站| 久久国产综合精品| 精品国产一区二区在线观看| 国产凹凸在线观看一区二区| 亚洲欧美日韩国产综合在线| 91国产免费看| 黄色日韩三级电影| 亚洲精品一区二区三区99| 亚洲自拍偷拍综合| 一本久久a久久精品亚洲| 国产精品传媒入口麻豆| 不卡一区二区中文字幕| 一区二区三区四区视频精品免费 | 色呦呦一区二区三区| 国产精品日韩成人| 色婷婷综合激情| 精品中文字幕一区二区| 欧美高清www午色夜在线视频| 性感美女久久精品| 欧美精品乱码久久久久久| 婷婷成人综合网| 欧美三区在线观看| 日韩高清一区二区| 日韩精品一区二区三区在线播放 | 一个色在线综合| 日韩欧美一级二级三级| 不卡视频免费播放| 一区二区三区在线播放| 这里只有精品99re| 91在线porny国产在线看|