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

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

?? ch375dll.c

?? CH372USB芯片的動態連接庫程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
		return( FALSE );
	}
}

BOOL	WINAPI	CH375ReadData(  // 讀取數據塊
	ULONG			iIndex,  // 指定CH375設備序號,必須是0
	PVOID			oBuffer,  // 指向一個足夠大的緩沖區,用于保存讀取的數據
	PULONG			ioLength )  // 指向長度單元,輸入時為準備讀取的長度,返回后為實際讀取的長度
{
	UCHAR			mBuffer[ mMAX_COMMAND_LENGTH ];
	ULONG			mLength;
	mPWIN32_COMMAND	mpCommand;
	if ( *ioLength > mMAX_BUFFER_LENGTH ) *ioLength = mMAX_BUFFER_LENGTH;  // 限制最大長度
	mpCommand = (PVOID)mBuffer;
	mpCommand -> mFunction = mPipeDataUp;  // 從數據塊上傳管道讀取數據
	mpCommand -> mLength = max( *ioLength, mCH375_PACKET_LENGTH );  // 數據長度,不能小于CH375的數據包長度
	mLength = mpCommand -> mLength + mWIN32_COMMAND_HEAD;  // 緩沖區長度,數據長度加上命令結構頭的長度
	if ( DeviceIoControl( dllHandle, IOCTL_CH375_COMMAND, mpCommand, mWIN32_COMMAND_HEAD, mpCommand, mLength, &mLength, NULL ) ) {
		*ioLength = min( mpCommand -> mLength, *ioLength );  //  返回實際讀取數據的長度
		CopyMemory( oBuffer, & mpCommand -> mBuffer[0], *ioLength );  // 返回讀取的數據
		return( TRUE );
	}
	else {  // 出錯
		*ioLength = 0;
		return( FALSE );
	}
}

BOOL	WINAPI	CH375AbortRead(  // 放棄數據塊讀操作
	ULONG			iIndex )  // 指定CH375設備序號,必須是0
{
	ULONG			mLength;
	mWIN32_COMMAND	mCommand;
	mCommand.mFunction = mFuncAbortPipe;  // 取消指定的USB管道的數據操作
	mCommand.mLength = sizeof( ULONG );
	*(PULONG) & mCommand.mBuffer[0] = mPipeDataUp;  // 數據塊上傳管道
	mLength = sizeof( mWIN32_COMMAND );  // 緩沖區長度,默認命令結構的長度
	if ( DeviceIoControl( dllHandle, IOCTL_CH375_COMMAND, &mCommand, mLength, &mCommand, mLength, &mLength, NULL ) )
		return( TRUE );
	else return( FALSE );  // 出錯
}

BOOL	WINAPI	CH375ResetRead(  // 復位數據塊讀操作
	ULONG			iIndex )  // 指定CH375設備序號,必須是0
{
	ULONG			mLength;
	mWIN32_COMMAND	mCommand;
	mCommand.mFunction = mFuncResetPipe;  // 復位指定的USB管道
	mCommand.mLength = sizeof( ULONG );
	*(PULONG) & mCommand.mBuffer[0] = mPipeDataUp;  // 數據塊上傳管道
	mLength = sizeof( mWIN32_COMMAND );  // 緩沖區長度,默認命令結構的長度
	if ( DeviceIoControl( dllHandle, IOCTL_CH375_COMMAND, &mCommand, mLength, &mCommand, mLength, &mLength, NULL ) )
		return( TRUE );
	else return( FALSE );  // 出錯
}

BOOL	WINAPI	CH375WriteData(  // 寫出數據塊
	ULONG			iIndex,  // 指定CH375設備序號,必須是0
	PVOID			iBuffer,  // 指向一個緩沖區,放置準備寫出的數據
	PULONG			ioLength )  // 指向長度單元,輸入時為準備寫出的長度,返回后為實際寫出的長度
{
	UCHAR			mBuffer[ mMAX_COMMAND_LENGTH ];
	ULONG			mLength;
	mPWIN32_COMMAND	mpCommand;
	if ( *ioLength > mMAX_BUFFER_LENGTH ) *ioLength = mMAX_BUFFER_LENGTH;  // 限制最大長度
	mpCommand = (PVOID)mBuffer;
	mpCommand -> mFunction = mPipeDataDown;  // 向數據塊下傳管道寫出數據
	mpCommand -> mLength = *ioLength;  // 數據長度
	CopyMemory( & mpCommand -> mBuffer[0], iBuffer, *ioLength );  // 準備寫出的數據
	mLength = *ioLength + mWIN32_COMMAND_HEAD;  // 緩沖區長度,數據長度加上命令結構頭的長度
	if ( DeviceIoControl( dllHandle, IOCTL_CH375_COMMAND, mpCommand, mLength, mpCommand, mWIN32_COMMAND_HEAD, &mLength, NULL ) ) {
		*ioLength = mpCommand -> mLength;  //  返回實際寫出數據的長度
		return( TRUE );
	}
	else {  // 出錯
		*ioLength = 0;
		return( FALSE );
	}
}

BOOL	WINAPI	CH375AbortWrite(  // 放棄數據塊寫操作
	ULONG			iIndex )  // 指定CH375設備序號,必須是0
{
	ULONG			mLength;
	mWIN32_COMMAND	mCommand;
	mCommand.mFunction = mFuncAbortPipe;  // 取消指定的USB管道的數據操作
	mCommand.mLength = sizeof( ULONG );
	*(PULONG) & mCommand.mBuffer[0] = mPipeDataDown;  // 數據塊下傳管道
	mLength = sizeof( mWIN32_COMMAND );  // 緩沖區長度,默認命令結構的長度
	if ( DeviceIoControl( dllHandle, IOCTL_CH375_COMMAND, &mCommand, mLength, &mCommand, mLength, &mLength, NULL ) )
		return( TRUE );
	else return( FALSE );  // 出錯
}

BOOL	WINAPI	CH375ResetWrite(  // 復位數據塊寫操作
	ULONG			iIndex )  // 指定CH375設備序號,必須是0
{
	ULONG			mLength;
	mWIN32_COMMAND	mCommand;
	mCommand.mFunction = mFuncResetPipe;  // 復位指定的USB管道
	mCommand.mLength = sizeof( ULONG );
	*(PULONG) & mCommand.mBuffer[0] = mPipeDataDown;  // 數據塊下傳管道
	mLength = sizeof( mWIN32_COMMAND );  // 緩沖區長度,默認命令結構的長度
	if ( DeviceIoControl( dllHandle, IOCTL_CH375_COMMAND, &mCommand, mLength, &mCommand, mLength, &mLength, NULL ) )
		return( TRUE );
	else return( FALSE );  // 出錯
}

BOOL	WINAPI	CH375ReadInter(  // 讀取中斷數據
	ULONG			iIndex,  // 指定CH375設備序號,必須是0
	PVOID			oBuffer,  // 指向一個足夠大的緩沖區,用于保存讀取的中斷數據
	PULONG			ioLength )  // 指向長度單元,輸入時為準備讀取的長度,返回后為實際讀取的長度
{
	UCHAR			mBuffer[ mMAX_COMMAND_LENGTH ];
	ULONG			mLength;
	mPWIN32_COMMAND	mpCommand;
	if ( *ioLength > mMAX_BUFFER_LENGTH ) *ioLength = mMAX_BUFFER_LENGTH;  // 限制長度
	mpCommand = (PVOID)mBuffer;
	mpCommand -> mFunction = mPipeInterUp;  // 從中斷數據上傳管道讀取數據
	mpCommand -> mLength = max( *ioLength, mCH375_PKT_LEN_SHORT );  // 數據長度,不能小于CH375的數據包長度
	mLength = mpCommand -> mLength + mWIN32_COMMAND_HEAD;  // 緩沖區長度,數據長度加上命令結構頭的長度
	if ( DeviceIoControl( dllHandle, IOCTL_CH375_COMMAND, mpCommand, mWIN32_COMMAND_HEAD, mpCommand, mLength, &mLength, NULL ) ) {
		*ioLength = min( mpCommand -> mLength, *ioLength );  //  返回實際讀取數據的長度
		CopyMemory( oBuffer, & mpCommand -> mBuffer[0], *ioLength );  // 返回讀取的數據
		return( TRUE );
	}
	else {  // 出錯
		*ioLength = 0;
		return( FALSE );
	}
}

BOOL	WINAPI	CH375AbortInter(  // 放棄中斷數據讀操作
	ULONG			iIndex )  // 指定CH375設備序號,必須是0
{
	ULONG			mLength;
	mWIN32_COMMAND	mCommand;
	mCommand.mFunction = mFuncAbortPipe;  // 取消指定的USB管道的數據操作
	mCommand.mLength = sizeof( ULONG );
	*(PULONG) & mCommand.mBuffer[0] = mPipeInterUp;  // 中斷數據上傳管道
	mLength = sizeof( mWIN32_COMMAND );  // 緩沖區長度,默認命令結構的長度
	if ( DeviceIoControl( dllHandle, IOCTL_CH375_COMMAND, &mCommand, mLength, &mCommand, mLength, &mLength, NULL ) )
		return( TRUE );
	else return( FALSE );  // 出錯
}

BOOL	WINAPI	CH375ResetInter(  // 復位中斷數據讀操作
	ULONG			iIndex )  // 指定CH375設備序號,必須是0
{
	ULONG			mLength;
	mWIN32_COMMAND	mCommand;
	mCommand.mFunction = mFuncResetPipe;  // 復位指定的USB管道
	mCommand.mLength = sizeof( ULONG );
	*(PULONG) & mCommand.mBuffer[0] = mPipeInterUp;  // 中斷數據上傳管道
	mLength = sizeof( mWIN32_COMMAND );  // 緩沖區長度,默認命令結構的長度
	if ( DeviceIoControl( dllHandle, IOCTL_CH375_COMMAND, &mCommand, mLength, &mCommand, mLength, &mLength, NULL ) )
		return( TRUE );
	else return( FALSE );  // 出錯
}

BOOL	WINAPI	CH375SetIntRoutine(  // 設定中斷服務程序
	ULONG				iIndex,  // 指定CH375設備序號,必須是0
	mPCH375_INT_ROUTINE	iIntRoutine )  // 指定中斷服務回調程序,為NULL則取消中斷服務,否則在中斷時調用該程序
{
	HANDLE			mHandle;
	dllIntRoutine = NULL;
	while ( dllIntThreadId ) {  /* 已經創建線程 */
		CH375AbortInter( 0 );  // 放棄在此之前的等待中斷,等待線程結束
		Sleep( 20 );  // 延時20毫秒
	}
	if ( iIntRoutine == NULL ) return( TRUE );  // 取消中斷服務
	dllIntRoutine = iIntRoutine;
	mHandle = CreateThread( NULL, 0, dllInterruptThread, (PVOID)dllDeviceName, 0, & dllIntThreadId );  // 創建線程模擬中斷事件
	if ( mHandle ) {  // 線程創建成功
		SetThreadPriority( mHandle, THREAD_PRIORITY_TIME_CRITICAL ); // 為了縮短中斷服務回調程序響應時間,應該提高線程的優先級
		return ( TRUE );
	}
	else return ( FALSE );  // 操作成功
}

BOOL	WINAPI	CH375WriteAuxData(  // 寫出輔助數據
	ULONG			iIndex,  // 指定CH375設備序號,必須是0
	PVOID			iBuffer,  // 指向一個緩沖區,放置準備寫出的數據
	PULONG			ioLength )  // 指向長度單元,輸入時為準備寫出的長度,返回后為實際寫出的長度
{
	UCHAR			mBuffer[ mMAX_COMMAND_LENGTH ];
	ULONG			mLength;
	mPWIN32_COMMAND	mpCommand;
	if ( *ioLength > mMAX_BUFFER_LENGTH ) *ioLength = mMAX_BUFFER_LENGTH;  // 限制最大長度
	mpCommand = (PVOID)mBuffer;
	mpCommand -> mFunction = mPipeAuxDown;  // 向輔助數據下傳管道寫出數據
	mpCommand -> mLength = *ioLength;  // 數據長度
	CopyMemory( & mpCommand -> mBuffer[0], iBuffer, *ioLength );  // 準備寫出的數據
	mLength = *ioLength + mWIN32_COMMAND_HEAD;  // 緩沖區長度,數據長度加上命令結構頭的長度
	if ( DeviceIoControl( dllHandle, IOCTL_CH375_COMMAND, mpCommand, mLength, mpCommand, mWIN32_COMMAND_HEAD, &mLength, NULL ) ) {
		*ioLength = mpCommand -> mLength;  //  返回實際寫出數據的長度
		return( TRUE );
	}
	else {  // 出錯
		*ioLength = 0;
		return( FALSE );
	}
}

BOOL	WINAPI	CH375ResetAux(  // 復位輔助數據寫操作
	ULONG			iIndex )  // 指定CH375設備序號,必須是0
{
	ULONG			mLength;
	mWIN32_COMMAND	mCommand;
	mCommand.mFunction = mFuncResetPipe;  // 復位指定的USB管道
	mCommand.mLength = sizeof( ULONG );
	*(PULONG) & mCommand.mBuffer[0] = mPipeAuxDown;  // 輔助數據下傳管道
	mLength = sizeof( mWIN32_COMMAND );  // 緩沖區長度,默認命令結構的長度
	if ( DeviceIoControl( dllHandle, IOCTL_CH375_COMMAND, &mCommand, mLength, &mCommand, mLength, &mLength, NULL ) )
		return( TRUE );
	else return( FALSE );  // 出錯
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人av免费| eeuss影院一区二区三区| 精品久久五月天| 国产一区高清在线| 国产精品私人自拍| 91片在线免费观看| 亚洲成在人线免费| 欧美刺激脚交jootjob| 国产精品自拍毛片| 亚洲视频小说图片| 欧美三片在线视频观看| 美女高潮久久久| 国产亚洲婷婷免费| 91美女在线视频| 日韩一本二本av| 国产毛片一区二区| 亚洲欧美一区二区三区国产精品| 在线观看一区二区精品视频| 秋霞电影一区二区| 亚洲国产高清aⅴ视频| 欧美自拍偷拍午夜视频| 美女视频免费一区| 中文字幕高清一区| 欧美日韩一区二区在线视频| 久久国产人妖系列| 中文字幕一区二区三区不卡 | 91在线观看美女| 亚洲国产欧美在线人成| 精品国产乱码久久久久久图片 | 久久久久久综合| 色婷婷久久综合| 理论电影国产精品| 自拍视频在线观看一区二区| 欧美日韩国产大片| 久久久不卡影院| 91免费在线视频观看| 蜜桃精品视频在线观看| 中文字幕一区二区在线播放| 777xxx欧美| jizzjizzjizz欧美| 日本sm残虐另类| 亚洲视频电影在线| 精品国内二区三区| 欧美在线视频日韩| 丁香婷婷综合激情五月色| 五月激情综合网| 中文字幕一区二区三区色视频| 日韩午夜av电影| 色综合一个色综合| 国产剧情一区在线| 亚洲成人一区二区在线观看| 欧美经典一区二区| 日韩一级黄色大片| 91国内精品野花午夜精品| 国产一区二区三区黄视频 | 99re成人精品视频| 奇米色一区二区| 亚洲黄色在线视频| 国产亚洲综合在线| 欧美精品第1页| bt7086福利一区国产| 美女一区二区三区| 亚洲午夜免费视频| 中文字幕一区二| 久久精品夜色噜噜亚洲aⅴ| 欧美夫妻性生活| 91国在线观看| voyeur盗摄精品| 国产激情精品久久久第一区二区 | 91丨porny丨蝌蚪视频| 国产一区二区三区蝌蚪| 日韩不卡一区二区| 亚洲一二三区视频在线观看| 中文字幕五月欧美| 久久久久久久久久久久久女国产乱| 欧美三级蜜桃2在线观看| 99国产欧美久久久精品| 国产精品综合在线视频| 美国毛片一区二区| 91麻豆精品国产91久久久久 | 2欧美一区二区三区在线观看视频| 欧美性xxxxxx少妇| 色偷偷成人一区二区三区91| 成人免费av资源| 国产精品一线二线三线精华| 青青草一区二区三区| 午夜精品福利一区二区蜜股av| 亚洲欧美日韩成人高清在线一区| 中国色在线观看另类| 久久精品水蜜桃av综合天堂| 欧美成人aa大片| 日韩亚洲欧美在线| 91精品国产乱码久久蜜臀| 精品视频色一区| 欧美色综合影院| 欧美在线小视频| 欧美三区在线观看| 欧美性一二三区| 欧美亚男人的天堂| 欧美日韩你懂得| 欧美日韩在线精品一区二区三区激情| 日本高清视频一区二区| 一本到不卡精品视频在线观看| 亚洲人成网站精品片在线观看| 国产女人18水真多18精品一级做 | 亚洲成人av中文| 亚洲国产日韩av| 亚洲成a人在线观看| 亚洲成人激情av| 日本欧美在线看| 久久激五月天综合精品| 国产在线视频一区二区三区| 国精品**一区二区三区在线蜜桃| 黄色日韩网站视频| 国产精选一区二区三区| 成人免费视频app| 99国产精品久| 在线观看日韩av先锋影音电影院| 欧美在线高清视频| 欧美疯狂做受xxxx富婆| 欧美电影免费观看高清完整版在线 | 亚洲综合在线视频| 亚洲国产综合91精品麻豆| 午夜在线电影亚洲一区| 日韩电影一区二区三区四区| 麻豆一区二区在线| 国产一区二区三区在线看麻豆| 国产风韵犹存在线视精品| 岛国精品在线观看| 91蜜桃传媒精品久久久一区二区| 欧美综合天天夜夜久久| 7777女厕盗摄久久久| 精品福利一二区| 国产精品美女久久久久av爽李琼 | 91丝袜国产在线播放| 欧美性大战久久久久久久| 欧美一区二区视频免费观看| 欧美成人官网二区| 中文字幕不卡的av| 亚洲最大的成人av| 美脚の诱脚舐め脚责91| 国产成人精品影视| 色哟哟国产精品| 7777精品久久久大香线蕉 | 日韩免费视频一区| 丁香五精品蜜臀久久久久99网站| 91日韩在线专区| 欧美丰满少妇xxxxx高潮对白| 精品99999| 亚洲日本欧美天堂| 日韩国产成人精品| 国产成人av一区二区三区在线 | 精品国产乱码久久久久久闺蜜 | 午夜久久电影网| 国产一区二区福利视频| 91色乱码一区二区三区| 日韩一区二区电影| 国产精品久久免费看| 亚洲国产综合视频在线观看| 经典三级视频一区| 91免费观看在线| 欧美电影精品一区二区| 亚洲视频狠狠干| 久久99国产精品尤物| 91在线视频播放地址| 欧美一级艳片视频免费观看| 国产精品久久久久久久久免费樱桃 | 国产精品剧情在线亚洲| 日韩激情一二三区| 成人国产精品视频| 欧美一区国产二区| 成人免费一区二区三区在线观看| 日韩激情一区二区| 91视频国产资源| 精品国产乱码久久久久久闺蜜 | 久久精品av麻豆的观看方式| 9人人澡人人爽人人精品| 欧美一区二区三区视频免费播放| 99精品久久免费看蜜臀剧情介绍| 91精品久久久久久久91蜜桃| 国产精品麻豆视频| 久久国产人妖系列| 精品视频在线免费观看| 国产精品久久久久四虎| 视频一区二区国产| 91免费观看在线| 久久精品亚洲国产奇米99| 丝袜美腿亚洲综合| 91色porny在线视频| 国产视频一区在线观看| 日韩成人免费电影| 在线亚洲一区观看| 欧美国产禁国产网站cc| 美美哒免费高清在线观看视频一区二区| 91丨九色丨黑人外教| 国产日韩欧美麻豆| 久久99精品国产.久久久久| 欧美系列亚洲系列| 亚洲欧洲精品天堂一级| 国产精品一区二区久久精品爱涩|