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

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

?? rcaclientlibrary.cpp

?? 遠程控制軟件源代碼
?? CPP
?? 第 1 頁 / 共 3 頁
字號:

#include "stdafx.h"


BOOL 
WINAPI 
DecodeFromJPEGBuffer(
 	BYTE *	lpJpgBuffer,
 	DWORD 	dwJpgBufferSize,
 	BYTE**	lppRgbBuffer,
 	DWORD*	lpdwWidth,
 	DWORD*	lpdwHeight,
 	DWORD*	lpdwNumberOfChannels
 	)
 {
 	
	BOOL 	bres;
	IJLERR 	jerr;
	DWORD 	dwWholeImageSize;
	BYTE* 	lpTemp = NULL;

	// Allocate the IJL JPEG_CORE_PROPERTIES structure.
	JPEG_CORE_PROPERTIES jcprops;

	bres = TRUE;

	__try
	{
	// Initialize the Intel(R) JPEG Library.
		jerr = ijlInit(&jcprops);
		if(IJL_OK != jerr)
		{
			bres = FALSE;
			__leave;
		} 	
 		
		// Get information on the JPEG image
		// (i.e., width, height, and channels).

		jcprops.JPGFile = NULL;
		jcprops.JPGBytes = lpJpgBuffer;
		jcprops.JPGSizeBytes = dwJpgBufferSize;
		jerr = ijlRead(&jcprops, IJL_JBUFF_READPARAMS);
		if(IJL_OK != jerr)
		{
			bres = FALSE;
			__leave;
		}
		// Set the JPG color space ... this will always be
		// somewhat of an educated guess at best because JPEG
		// is "color blind" (i.e., nothing in the bit stream
		// tells you what color space the data was encoded from).
		// However, in this example we assume that we are
		// reading JFIF files which means that 3 channel images
		// are in the YCbCr color space and 1 channel images are
		// in the Y color space.
		switch(jcprops.JPGChannels)
		{
		case 1:
			{
				jcprops.JPGColor = IJL_G;
				jcprops.DIBColor = IJL_RGB;
				jcprops.DIBChannels = 3;
				break;
			}
		case 3:
			{
				jcprops.JPGColor = IJL_YCBCR;
				jcprops.DIBColor = IJL_RGB;
				jcprops.DIBChannels = 3;
				break;
			}
		default:
			{
				// This catches everything else, but no
				// color twist will be performed by the IJL.

				jcprops.JPGColor = IJL_OTHER;
				jcprops.DIBColor = IJL_OTHER;
				jcprops.DIBChannels = jcprops.JPGChannels;
				break;
			}
		}
		// Compute size of desired pixel buffer.
		dwWholeImageSize = jcprops.JPGWidth * jcprops.JPGHeight *
			jcprops.DIBChannels;
		// Allocate memory to hold the decompressed image data.
		lpTemp = new BYTE [dwWholeImageSize];
		if(NULL == lpTemp)
		{
			bres = FALSE;
			__leave;
		}
		// Set up the info on the desired DIB properties.
		jcprops.DIBWidth = jcprops.JPGWidth;
		jcprops.DIBHeight = jcprops.JPGHeight;
		jcprops.DIBPadBytes = 0;
		jcprops.DIBBytes = lpTemp;
		// Now get the actual JPEG image data into the pixel buffer.
		jerr = ijlRead(&jcprops, IJL_JBUFF_READWHOLEIMAGE);
		if(IJL_OK != jerr)
		{
			bres = FALSE;
			__leave;
		}
	} // __try
	__finally
	{
		if(FALSE == bres)
		{
			if(NULL != lpTemp)
			{
				delete [] lpTemp;
				lpTemp = NULL;
			}
		}

		// Clean up the Intel(R) JPEG Library.
		ijlFree(&jcprops);
		*lpdwWidth = jcprops.DIBWidth;
		*lpdwHeight = jcprops.DIBHeight;
		*lpdwNumberOfChannels = jcprops.DIBChannels;
		*lppRgbBuffer = lpTemp;

	} // __finally


	return bres;
 } // DecodeFromJPEGBuffer()


 //----------------------------------------------------------
 // An example using the Intel(R) JPEG Library:
 // -- Encode Windows DIB to JPEG buffer.
 //----------------------------------------------------------
 BOOL WINAPI EncodeToJPEGBuffer(
	 BYTE* lpRgbBuffer,
	 DWORD dwWidth,
	 DWORD dwHeight,
	 BYTE** lppJpgBuffer,
	 DWORD* lpdwJpgBufferSize,
	 int	iQuality
)
{
	 BOOL bres;
	 IJLERR jerr;
	 DWORD dwRgbBufferSize;
	 BYTE* lpTemp;

	 // Allocate the IJL JPEG_CORE_PROPERTIES structure.
	 JPEG_CORE_PROPERTIES jcprops;
	 bres = TRUE;
	 __try
	 {
		 // Initialize the Intel(R) JPEG Library.

		 jerr = ijlInit(&jcprops);
		 if(IJL_OK != jerr)
		 {
			 bres = FALSE;
			 __leave;
		 }
		 dwRgbBufferSize = dwWidth * dwHeight * 3;
		 lpTemp = new BYTE [dwRgbBufferSize];
		 if(NULL == lpTemp)
		 {
			 bres = FALSE;
			 __leave;
		 }
		 // Set up information to write from the pixel buffer.
		 jcprops.DIBWidth = dwWidth;
		 jcprops.DIBHeight = dwHeight; // Implies a bottom-up DIB.
		 jcprops.DIBBytes = lpRgbBuffer;
		 jcprops.DIBPadBytes = 0;
		 jcprops.DIBChannels = 3;
		 jcprops.DIBColor = IJL_RGB;
		 jcprops.JPGWidth = dwWidth;
		 jcprops.JPGHeight = dwHeight;
		 jcprops.JPGFile = NULL;
		 jcprops.JPGBytes = lpTemp;
		 jcprops.JPGSizeBytes = dwRgbBufferSize;
		 jcprops.JPGChannels = 3;
		 jcprops.JPGColor = IJL_YCBCR;
		 jcprops.JPGSubsampling = IJL_411; // 4:1:1 subsampling.
		 jcprops.jquality = (iQuality>=0)&&(iQuality<=100) ? iQuality : 50; // Select "good" image quality
		 // Write the actual JPEG image from the pixel buffer.
		 jerr = ijlWrite(&jcprops,IJL_JBUFF_WRITEWHOLEIMAGE);
		 if(IJL_OK != jerr)
		 {
			 bres = FALSE;
			 __leave;
		 }
	 } // __try
	 __finally
	 {
		 if(FALSE == bres)
		 {
			 if(NULL != lpTemp)
			 {
				 delete[] lpTemp;
				 lpTemp = NULL;
			 }
		 }
		 *lppJpgBuffer = lpTemp;
		 *lpdwJpgBufferSize = jcprops.JPGSizeBytes;
		 // Clean up the Intel(R) JPEG Library.
		 ijlFree(&jcprops);
	 }
	 return bres;
 } // EncodeToJPEGBuffer()


////////////////////////////////////////
//
//	SOCKET 異步 IO 幫助函數, 異步模型為 "事件選擇模型"
//	
//	參數:
//	SOCKET s:	
//		套接字 s 是一個已成功連接的套接字, 并至少使用 FD_READ 標志作為
//		參數 lNetworkEvents 調用了 WSAEventSelect 成功地將套接字置為異步事件選擇模型
//				
//	HANDLE hEvent: 
//		一個用于網絡 IO 事件通知的事件句柄. 
//	
//	char * buf:
//		接收數據緩沖
//
//	int	len:
//		接收數據緩沖總長度
//
//	BOOL * bExit:
//		BOOL 變量的指針, 應用程序可以修改這個值. 這個函數調用 WaitForSingleObject 等待 
//		dwMilliseconds 毫秒后, 將檢測 bExit 的值, 若為 bExit 為 TRUE, 函數將立即返回.
//		返回時是不管等待是否成功的,或說不論等待結果是 WAIT_TIMEOUT 或者 WAIT_OBJECT_0,
//		都會返回, 只要 bExit 為 TRUE
//	
//
//	DWORD dwMilliseconds:
//		函數將使用這個值作為第二個參數,調用 WaitForSingleObject. 以毫秒為單位
//		INFINITE 為無限等待
//
//	返回值:
//		若第一次調用接收函數時, 連接出現問題, 則返回 0 
//
//		若第一次調用接收函數成功后,以后無論發生任何錯誤都返回一個整型值,
//		描述已接收了多少數據
//
//		如果返回值與參數 len 相等, 說明成功發送出了所有數據, 若不等,可能是網絡錯誤造成, 
//		也可能是 bExit 被設為 TRUE 后接收操作被強制中斷

INT
WINAPI RCARecv_EventSelectIO( 
		SOCKET	s, 
		HANDLE	hEventArray[2],
		char*	buf,
const	int		len
)
{
	if( (buf == NULL) || (len==0) )
		return FALSE;
	
	int					ret;
	DWORD				dwret;
	int					count	= len;
	int					index	= 0;
	WSANETWORKEVENTS	ns;

	while( count > 0 )
	{
		ret = recv( s, &(buf[index]), count, 0 );

		if( ret == SOCKET_ERROR )
		{
			// 如果發送錯誤,并且錯誤代碼不是"被阻塞", 則返回 FALSE ( 發生了網絡錯誤 )
			if( WSAGetLastError() != WSAEWOULDBLOCK )
				return len - count;

		} else if( ret == 0 )
		{
			return len - count ;

		} else 
		{
			// 如果成功發送, 則更新緩沖偏移字節數和待發總字節數
			index += ret;
			count -= ret;
			continue;
		}

		dwret = WaitForMultipleObjects( 
			2, hEventArray, FALSE, INFINITE );

		switch ( dwret )
		{
		case WAIT_FAILED:
			return len - count;
		
		case WAIT_OBJECT_0:
			break;

		case WAIT_OBJECT_0 + 1:
			return len - count;

		case WAIT_TIMEOUT:
			break;
		}

		ret = WSAEnumNetworkEvents( s, hEventArray[0], &ns );

		if( ret == SOCKET_ERROR )
		{
			return len - count;
		}
		
		if( ns.lNetworkEvents & FD_READ )
		{
			if( ns.iErrorCode[ FD_READ_BIT] != 0 )
			{
				return len - count;
			}
			else
			{
				continue; // 回到循環開始處,再次接收數據(此時,絕對可以接收數據)
			}
		}

		if( ns.lNetworkEvents & FD_CLOSE )
		{
			return len - count;
		}
	}
	
	return len - count;
}




////////////////////////////////////////
//
//	SOCKET 異步 IO 幫助函數, 異步模型 事件選擇模型
//	
//	參數:
//	SOCKET s:	
//		套接字 s 是一個已成功連接的套接字, 并至少使用 FD_WRITE 標志作為
//		參數 lNetworkEvents 調用了 WSAEventSelect 成功地將套接字置為異步事件選擇模型
//				
//	HANDLE hEvent: 
//		一個用于網絡 IO 事件通知的事件句柄. 
//	
//	char * buf:
//		待發數據緩沖
//
//	int	len:
//		待發數據緩沖總長度
//
//	BOOL * bExit:
//		BOOL 變量的指針, 應用程序可以修改這個值. 這個函數調用 WaitForSingleObject 等待 
//		dwMilliseconds 毫秒后, 將檢測 bExit 的值, 若為 bExit 為 TRUE, 函數將立即返回.
//		返回時是不管等待是否成功的,或說不論等待結果是 WAIT_TIMEOUT 或者 WAIT_OBJECT_0,
//		都會返回, 只要 bExit 為 TRUE
//	
//
//	DWORD dwMilliseconds:
//		函數將使用這個值作為第二個參數,調用 WaitForSingleObject. 以毫秒為單位
//		INFINITE 為無限等待
//
//	返回值:
//		若第一次調用發送函數時, 連接出現問題, 則返回 0 
//
//		若第一次調用發送函數成功后,以后無論發生任何錯誤都返回一個整型值,
//		描述已發送了多少數據
//
//		如果返回值與參數 len 相等, 說明成功發送出了所有數據, 若不等,可能是網絡錯誤造成, 
//		也可能是 bExit 被設為 TRUE 后發送操作被強制中斷
INT 
WINAPI RCASend_EventSelectIO( 
		SOCKET	s, 
		HANDLE	hEventArray[2],
		char*	buf,
const	int		len
)
{
	if( (buf == NULL) || (len==0) )
		return FALSE;
	
	int					ret;
	int					count	= (int)len;
	int					index	=0;
	DWORD				dwret;
	WSANETWORKEVENTS	ns;

	while( count > 0 )
	{
		
		ret = send( s, &(buf[index]), count, 0 );
			
		if( ret == SOCKET_ERROR )
		{
			// 如果發送錯誤,并且錯誤代碼不是"被阻塞", 則返回 FALSE ( 發生了網絡錯誤 )
			if( WSAGetLastError() != WSAEWOULDBLOCK )
				return len - count;
		}
		else
		{
			// 如果成功發送, 則更新緩沖偏移字節數和待發總字節數
			cout << ret << endl;

			index += ret;
			count -= ret;
			continue;
		}

		// 到這里,說明沒而待發緩沖區可供使用, 在 AsyncEvent IO 模型中, 可以等待事件通知的到來
		// 現在根據 dwMilliseconds 來待待事件通知
		dwret = WaitForMultipleObjects( 
			2,  hEventArray, FALSE, INFINITE );
		switch( dwret )
		{
		case WAIT_FAILED:
		case WAIT_OBJECT_0 + 1:
			return len - count;

		case WAIT_OBJECT_0:
			break;

		case WAIT_TIMEOUT:
			continue;
		}

		ret = WSAEnumNetworkEvents( s, hEventArray[0], &ns );

		if( ns.lNetworkEvents & FD_WRITE )
		{
			if( ns.iErrorCode[ FD_WRITE_BIT] != 0 )
				return (len - count);
			else
				continue; // 回到前邊,再次發送數據(此時,絕對可以發送數據)
		}

		if( ret == SOCKET_ERROR )
			return (len - count);
		
		if( ns.lNetworkEvents & FD_CLOSE )
			return (len - count);
	}

	return len - count;
}





?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成a人无v码亚洲福利| 久久久99免费| 久久精品一二三| 午夜影院在线观看欧美| 成人91在线观看| 欧美tk—视频vk| 亚洲妇女屁股眼交7| 懂色av一区二区三区蜜臀| 欧美一区二区三区的| 玉米视频成人免费看| 不卡的av在线| 国产日韩亚洲欧美综合| 久久国产精品色婷婷| 在线成人高清不卡| 亚洲精品国产一区二区精华液| 国产成人欧美日韩在线电影| 日韩精品专区在线影院观看 | 久久精品无码一区二区三区| 日本中文字幕一区二区有限公司| 99re热视频精品| 国产精品美女久久久久av爽李琼 | 欧美一区二区免费| 午夜精品福利一区二区三区蜜桃| 91在线视频18| 国产精品伦理一区二区| 成人综合婷婷国产精品久久免费| 欧美变态tickling挠脚心| 热久久久久久久| 日韩一区二区三区av| 午夜伦欧美伦电影理论片| 欧美日韩一区久久| 亚洲成av人综合在线观看| 欧美日韩一区国产| 日韩av午夜在线观看| 日韩一区二区三区四区五区六区 | 国产成人av网站| 久久久久久99精品| 成人动漫在线一区| 亚洲精品自拍动漫在线| 色88888久久久久久影院野外| 亚洲欧美电影一区二区| 色婷婷综合视频在线观看| 亚洲激情综合网| 欧美久久免费观看| 麻豆精品久久久| 国产嫩草影院久久久久| 99在线精品视频| 亚洲午夜精品网| 7777精品伊人久久久大香线蕉最新版| 青青草伊人久久| 2017欧美狠狠色| 91在线精品一区二区三区| 亚洲人吸女人奶水| 欧美日韩免费视频| 久久精品国产久精国产| 欧美激情综合五月色丁香| 99re热视频这里只精品| 亚洲一区二区三区三| 欧美成人在线直播| 成人va在线观看| 亚洲丰满少妇videoshd| 日韩欧美久久久| 91美女片黄在线| 久久精品国产99久久6| 国产精品传媒入口麻豆| 777奇米四色成人影色区| 国产乱码字幕精品高清av| 一区2区3区在线看| 精品国产一区二区亚洲人成毛片| 99精品久久久久久| 久久国产剧场电影| 亚洲综合免费观看高清在线观看| 日韩欧美你懂的| 色就色 综合激情| 国产毛片精品视频| 性做久久久久久久免费看| 欧美国产精品一区二区| 欧美精品久久99久久在免费线| 国产成人免费视频网站高清观看视频| 亚洲永久免费av| 国产欧美一区二区精品性色超碰| 欧美亚洲图片小说| 国产风韵犹存在线视精品| 亚洲国产成人porn| 欧美国产精品中文字幕| 日韩欧美国产午夜精品| 在线免费观看成人短视频| 精品一二三四区| 五月婷婷久久丁香| 国产精品家庭影院| 国产亚洲一区二区三区四区| 日韩欧美在线1卡| 欧美性生交片4| 粉嫩久久99精品久久久久久夜| 日韩不卡一二三区| 一区二区三区四区在线免费观看| 国产欧美日韩麻豆91| 精品国产伦一区二区三区免费| 欧美吞精做爰啪啪高潮| 色呦呦国产精品| 91天堂素人约啪| 国产成人精品影视| 国产美女一区二区三区| 国产在线不卡一区| 国产在线视频一区二区三区| 日本强好片久久久久久aaa| 婷婷开心久久网| 亚洲成人av一区二区三区| 亚洲国产成人精品视频| 亚洲一区二区三区小说| 亚洲影院在线观看| 午夜av一区二区三区| 亚洲国产视频一区| 亚洲午夜精品17c| 五月婷婷色综合| 奇米精品一区二区三区在线观看 | 亚洲理论在线观看| 艳妇臀荡乳欲伦亚洲一区| 久久超碰97中文字幕| 麻豆久久久久久| 久久99久久精品欧美| 国内国产精品久久| 国产99精品国产| 91日韩一区二区三区| 欧美综合一区二区| 久久99精品一区二区三区三区| 美国精品在线观看| 国产黄色精品网站| 91视频免费观看| 欧美丝袜自拍制服另类| 欧美一区二区三区日韩视频| 日韩精品一区二区三区四区 | 亚洲欧美日本韩国| 亚洲福利一区二区| 日韩二区在线观看| 极品瑜伽女神91| 成人国产一区二区三区精品| 在线中文字幕不卡| 日韩视频123| 国产精品你懂的在线欣赏| 夜夜嗨av一区二区三区中文字幕 | 日韩一区二区在线观看视频播放| 精品国免费一区二区三区| 国产精品视频一区二区三区不卡 | 中文字幕免费观看一区| 一区二区三区欧美亚洲| 美女尤物国产一区| 岛国一区二区三区| 欧美日韩一区二区不卡| 国产网站一区二区| 亚洲成人1区2区| 成人av影院在线| 91精品国产麻豆国产自产在线| 国产日本亚洲高清| 肉色丝袜一区二区| 99re视频精品| 精品国产伦理网| 亚洲一区在线播放| 国产精品一品二品| 欧美日韩高清一区二区不卡| 国产片一区二区| 日韩黄色一级片| 色综合天天天天做夜夜夜夜做| 欧美本精品男人aⅴ天堂| 国产精品久久久一本精品| 石原莉奈一区二区三区在线观看| 高清不卡一区二区在线| 欧美日韩国产小视频| 亚洲欧美综合网| 国模冰冰炮一区二区| 欧美婷婷六月丁香综合色| 国产精品免费视频观看| 麻豆中文一区二区| 欧美日韩国产高清一区二区 | 爽爽淫人综合网网站| 99国产精品99久久久久久| www国产亚洲精品久久麻豆| 午夜精品视频在线观看| 99麻豆久久久国产精品免费优播| 日韩午夜在线观看视频| 亚洲电影激情视频网站| 色8久久人人97超碰香蕉987| 日本一区二区三区四区| 国内精品第一页| 欧美不卡在线视频| 免费成人美女在线观看.| 欧美精品日韩一本| 亚洲图片欧美色图| 在线免费不卡电影| 一区二区三区欧美| 99精品黄色片免费大全| 国产精品全国免费观看高清| 国产高清一区日本| 久久久www免费人成精品| 国产麻豆精品在线观看| 亚洲精品在线电影| 国产成人精品亚洲午夜麻豆| 久久综合九色综合97_久久久| 国产一区二区毛片| 国产日韩欧美综合一区|