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

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

?? ov511.cpp

?? Windows+CE下USB攝像頭驅動開發,使用EVC開發。攝像頭為 網眼 Webeye 2000 VID 0x05A9 PID 0xA511 輸出格式:RAW-YUV
?? CPP
字號:
// Ov511.cpp : Defines the entry point for the DLL application.
//

//-------------------------------------------------------------------------
//======================================================================
// OV511 - Ov511 Webcam driver for Windows CE
//
// Author: MacintoshM
//======================================================================
#include <windows.h>				// For all that Windows stuff
#include <winioctl.h>				// Needed for CTLCODE macro
#include <USBdi.h>					// USB includes
#include <usb100.h>					// USB includes

#include "ov511camsdk.h"				// IOCTL defs for driver
#include "Ov511Cam.h" 				// Local driver includes
#include "USBVideo.h"

//
// Globals
//
HINSTANCE hInst;					 // DLL instance handle

BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
					 )
{
    hInst = (HINSTANCE)hModule;

	switch (ul_reason_for_call) {
		case DLL_PROCESS_ATTACH:
			DEBUGREGISTER(hInst);
			// Improve performance by passing on thread attach calls
			DisableThreadLibraryCalls (hInst);
		break;
	
		case DLL_PROCESS_DETACH:
			DEBUGMSG(ZONE_INIT, (DTAG TEXT("DLL_PROCESS_DETACH\r\n")));
			break;
	}
	return TRUE;
}

//======================================================================
// CAM_Init - Driver initialization function
//
DWORD CAM_Init (DWORD dwContext, LPCVOID lpvBusContext) 
{
	RETAILMSG(1,(TEXT("Camera Init!\r\n")));
	PDRVCONTEXT pDrv;

	// Allocate a drive instance structure.
	pDrv = GetConfigData (dwContext);
	if (pDrv)
	{
		
	}
	return (DWORD)pDrv;
}
//======================================================================
// CAM_Deinit - Driver de-initialization function
//
BOOL CAM_Deinit (DWORD dwContext) 
{
	
	return 1;
}
//======================================================================
// CAM_Open - Called when driver opened
//
DWORD CAM_Open (DWORD dwContext, DWORD dwAccess, DWORD dwShare) 
{	
	PDRVCONTEXT pDrv = (PDRVCONTEXT) dwContext;

	RETAILMSG(1, (TEXT("CAM_Open++ dwContext: %x\r\n"), dwContext));
	// Verify that the context handle is valid.
	if (pDrv && (pDrv->dwSize != sizeof (DRVCONTEXT))) 
	{
		return 0;
	}
	EnterCriticalSection (&pDrv->csDCall);

	if (pDrv->nNumOpens)
	{
		//已經打開
		LeaveCriticalSection (&pDrv->csDCall);
		SetLastError(ERROR_ACCESS_DENIED);
		return 0;
	}
	pDrv->nNumOpens++;

	LeaveCriticalSection (&pDrv->csDCall);

	RETAILMSG(1, (TEXT("CAM_Open-- dwContext: %x\r\n"), dwContext));

	return (DWORD)pDrv;
}
//======================================================================
// CAM_Close - Called when driver closed
//
BOOL CAM_Close (DWORD dwOpen) 
{	
	PDRVCONTEXT pDrv = (PDRVCONTEXT) dwOpen;

	RETAILMSG(1, (TEXT("CAM_Close++ dwOpen: %x\r\n"), dwOpen));

	EnterCriticalSection (&pDrv->csDCall);

	if (pDrv && (pDrv->dwSize != sizeof (DRVCONTEXT))) 
	{
		RETAILMSG(1, (TEXT("CAM_Close failed\r\n")));
		SetLastError(ERROR_INVALID_HANDLE);
		return 0;
	}

	//添加停止捕獲的代碼

	if (pDrv->nNumOpens)
	{
		pDrv->nNumOpens--;
	}

	LeaveCriticalSection (&pDrv->csDCall);

	RETAILMSG(1, (TEXT("CAM_Close--\r\n")));
	return TRUE;
}
//======================================================================
// CAM_Read - Called when driver read
//
DWORD CAM_Read (DWORD dwOpen, LPVOID pBuffer, DWORD dwCount) 
{
	DWORD dwBytesRead = 0;
	DEBUGMSG (ZONE_EXENTRY, 
			  (DTAG TEXT("CAM_Read++ dwOpen: %x\r\n"), dwOpen));


	DEBUGMSG (ZONE_FUNC, (DTAG TEXT("CAM_Read--\r\n")));
	return dwBytesRead;
}
//======================================================================
// CAM_Write - Called when driver written
//
DWORD CAM_Write (DWORD dwOpen, LPVOID pBuffer, DWORD dwCount) 
{
	DWORD dwBytesWritten = 0;
	DEBUGMSG (ZONE_EXENTRY, 
			  (DTAG TEXT("CAM_Write++ dwOpen: %x\r\n"), dwOpen));

	DEBUGMSG (ZONE_FUNC, (DTAG TEXT("CAM_Write--\r\n")));
	return dwBytesWritten;
}
//======================================================================
// CAM_Seek - Called when SetFilePtr called
//
DWORD CAM_Seek (DWORD dwOpen, long lDelta, WORD wType) 
{
	DEBUGMSG (ZONE_EXENTRY,(DTAG TEXT("CAM_Seek++ dwOpen:%x %d %d\r\n"), 
			  dwOpen, lDelta, wType));

	DEBUGMSG (ZONE_EXENTRY, (DTAG TEXT("CAM_Seek--\r\n")));
	return 0;
}
//======================================================================
// CAM_IOControl - Called when DeviceIOControl called
// 
DWORD CAM_IOControl (DWORD dwOpen, DWORD dwCode, PBYTE pIn, DWORD dwIn,
					 PBYTE pOut, DWORD dwOut, DWORD *pdwBytesWritten) 
{
	PDRVCONTEXT pDrv;
	DWORD err = ERROR_INVALID_PARAMETER;

	int i;
	DWORD startaddress;
	DWORD bytesRead;

	RETAILMSG(1, (TEXT("CAM_IOControl++ dwOpen: %x  dwCode: %x\r\n"),
			  dwOpen, dwCode));

	pDrv = (PDRVCONTEXT) dwOpen;
	EnterCriticalSection (&pDrv->csDCall);
	
	switch (dwCode) 
	{
		case IOCTL_CAMERA_DEVICE_LED_ON:
			RETAILMSG(1, (TEXT("Turn On LED!\r\n")));
			RegisterWrite(pDrv,0x55,1);
			break;

		case IOCTL_CAMERA_DEVICE_LED_OFF:
			RETAILMSG(1, (TEXT("Turn Off LED!\r\n")));
			RegisterWrite(pDrv,0x55,0);			
			break;

		case IOCTL_CAMERA_DEVICE_LED_READ:
			RETAILMSG(1, (TEXT("Read LED status!\r\n")));
			RegisterRead(pDrv,0x55,pOut);
			break;

		case IOCTL_CAMERA_DEVICE_START_CAPTURE:
			Ov51xSetDefaultParams(pDrv);
			break;

		case IOCTL_CAMERA_DEVICE_STOP_CAPTURE:
			Ov51xStop(pDrv);
			break;

		case IOCTL_CAMERA_DEVICE_CAPTURE_ONE_FRAME:
			RETAILMSG(1, (TEXT("Init isoc!\r\n")));
			startaddress=0;
			for(i=0;i<25;i++)
			{
				bytesRead=Ov51xReadOneFrame(pDrv,pOut,startaddress);
				startaddress+=bytesRead;
			}
			*pdwBytesWritten=startaddress;
			break;
		
		default:
			RETAILMSG(1, (TEXT("CAM_IOControl: unknown code %x\r\n"), dwCode));
			err = ERROR_INVALID_PARAMETER;
			break;
	}
	SetLastError (err);
	LeaveCriticalSection (&pDrv->csDCall);
	RETAILMSG(1, (TEXT("CAM_IOControl-- rc = %d\r\n"), err));
	return err ? FALSE : TRUE;
}
//======================================================================
// CAM_PowerDown - Called when system suspends
//
void CAM_PowerDown (DWORD dwContext) 
{
	return;
}
//======================================================================
// CAM_PowerUp - Called when resumes
//
void CAM_PowerUp (DWORD dwContext) 
{
	return;
}


//----------------------------------------------------------------------
// GetConfigData - Get the pointer to the driver context structure
//
PDRVCONTEXT GetConfigData (DWORD dwContext)
{
	int nLen, rc;
	DWORD dwLen, dwType, dwSize = 0;
	HKEY hKey;
	PDRVCONTEXT pDrv = 0;

	DEBUGMSG (ZONE_FUNC, (DTAG TEXT("GetConfigData++\r\n")));
	nLen = 0;
	// If ptr < 65K, it's a value, not a pointer.  
	if (dwContext < 0x10000) {
		return 0; 
	} else {
		__try {
			nLen = lstrlen ((LPTSTR)dwContext);
		}
		__except (EXCEPTION_EXECUTE_HANDLER) {
			nLen = 0;
		}
	}
	if (!nLen) {
		DEBUGMSG (ZONE_ERROR, (DTAG TEXT("dwContext not a ptr\r\n")));
		return 0;
	}

	// Open the Active key for the driver.
	rc = RegOpenKeyEx(HKEY_LOCAL_MACHINE,(LPTSTR)dwContext,0, 0, &hKey);

	if (rc == ERROR_SUCCESS) {
		// Read the key value.
		dwLen = sizeof(pDrv);
		rc = RegQueryValueEx (hKey, TEXT("ClientInfo"), NULL, &dwType,
								   (PBYTE)&pDrv, &dwLen);

		RegCloseKey(hKey);
		if ((rc == ERROR_SUCCESS) && (dwType == REG_DWORD))
		{
			__try {
				if (pDrv->dwSize != sizeof (DRVCONTEXT))
					pDrv = 0;
			}
			__except (EXCEPTION_EXECUTE_HANDLER) {
				pDrv = 0;
			}
		}
		else 
		{
			DEBUGMSG (ZONE_ERROR, (DTAG TEXT("Error reading registry\r\n")));
			pDrv = 0;
		}
	} else
		DEBUGMSG (ZONE_ERROR, (DTAG TEXT("Error opening Active key\r\n")));

	DEBUGMSG (ZONE_FUNC, (DTAG TEXT("GetConfigData--\r\n")));
	return pDrv;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频完全免费看| 免费观看日韩av| 日韩欧美一二三区| 欧美日韩高清影院| 91久久精品一区二区三| 99久久久久久99| eeuss鲁片一区二区三区 | 精品国产制服丝袜高跟| 欧美在线啊v一区| 91黄色小视频| 欧美吻胸吃奶大尺度电影| 在线影院国内精品| 欧美视频一区二| 3751色影院一区二区三区| 欧美三电影在线| 日韩一区二区三区免费看| 精品美女在线观看| 国产欧美日韩三级| 国产精品久线在线观看| 亚洲码国产岛国毛片在线| 有坂深雪av一区二区精品| 一区二区三区精品| 免费看欧美美女黄的网站| 韩国毛片一区二区三区| 欧美图片一区二区三区| 日韩一区二区三区精品视频| 26uuu色噜噜精品一区二区| 久久蜜桃av一区二区天堂| 中文字幕欧美三区| 一区二区在线免费观看| 午夜欧美视频在线观看| 国产美女娇喘av呻吟久久| av成人动漫在线观看| 欧美在线视频日韩| 欧美videofree性高清杂交| 欧美激情综合五月色丁香小说| 亚洲欧美另类在线| 青青草原综合久久大伊人精品| 岛国一区二区在线观看| 欧美私模裸体表演在线观看| 精品日韩成人av| 亚洲自拍另类综合| 国产精品一二三四五| 在线看国产一区二区| 国产午夜亚洲精品羞羞网站| 一区二区三区电影在线播| 精品一区二区免费| 91福利国产精品| 国产亚洲欧美日韩在线一区| 亚洲午夜久久久久久久久电影院| 国产在线视视频有精品| 欧美日韩在线播| 欧美韩国日本综合| 久99久精品视频免费观看| 色域天天综合网| 国产婷婷色一区二区三区在线| 午夜精品福利一区二区蜜股av| 国产成人av电影在线| 欧美久久久久中文字幕| 中文字幕在线不卡一区二区三区| 美女视频黄 久久| 欧美日韩国产成人在线91| 国产精品夫妻自拍| 国产suv精品一区二区6| 久久这里只有精品视频网| 偷偷要91色婷婷| 欧美日韩亚洲另类| 亚洲欧美日韩在线播放| 成人午夜激情片| 久久久99免费| 激情综合亚洲精品| 精品欧美久久久| 日本亚洲视频在线| 欧美日韩国产123区| 亚洲gay无套男同| 欧美午夜精品一区二区蜜桃| 亚洲欧美另类在线| 91国模大尺度私拍在线视频| 国产精品电影一区二区| 99视频在线精品| 免费看日韩精品| 欧美一区二区视频免费观看| 亚洲成人动漫在线观看| 欧美日韩高清影院| 午夜精品久久一牛影视| 制服.丝袜.亚洲.另类.中文 | 日韩和欧美的一区| 欧美一区二区视频观看视频| 美女爽到高潮91| 久久久久久久久97黄色工厂| 国产精品一色哟哟哟| 国产日韩影视精品| 99久久伊人网影院| 亚洲精品中文字幕乱码三区| 欧美综合一区二区| 日韩不卡在线观看日韩不卡视频| 日韩欧美国产电影| 高清日韩电视剧大全免费| 亚洲欧美综合另类在线卡通| 色天使色偷偷av一区二区| 污片在线观看一区二区| 精品国产乱码久久久久久1区2区| 国产精品一区在线| 亚洲欧洲综合另类在线| 欧美日本一区二区在线观看| 美国av一区二区| 国产精品欧美精品| 在线观看免费成人| 免费成人结看片| 国产精品萝li| 91麻豆精品国产91| 高清beeg欧美| 亚洲电影在线免费观看| 26uuu成人网一区二区三区| 丁香亚洲综合激情啪啪综合| 亚洲一区二区三区美女| 亚洲精品一线二线三线无人区| 成人av电影免费在线播放| 午夜精品福利一区二区三区av | 一区二区中文字幕在线| 欧美日韩国产123区| 国产电影精品久久禁18| 亚洲午夜一二三区视频| 国产欧美日韩卡一| 欧美日韩一级黄| 成人av午夜电影| 麻豆精品一区二区| 亚洲制服丝袜一区| 国产精品私房写真福利视频| 欧美一三区三区四区免费在线看| 99久久综合狠狠综合久久| 久久精品国产精品亚洲红杏 | 欧美日韩精品福利| jvid福利写真一区二区三区| 麻豆视频一区二区| 亚洲第一电影网| 亚洲欧美日韩中文字幕一区二区三区| 亚洲精品一区二区三区福利 | 国产成人夜色高潮福利影视| 日本系列欧美系列| 亚洲一区二区不卡免费| 综合婷婷亚洲小说| 欧美高清在线一区二区| 精品福利一区二区三区免费视频| 欧美日韩的一区二区| 色婷婷亚洲精品| 99国内精品久久| 成人亚洲一区二区一| 国产中文字幕一区| 国产在线不卡一卡二卡三卡四卡| 日韩精品乱码免费| 日韩精品亚洲专区| 天使萌一区二区三区免费观看| 亚洲欧美电影院| 亚洲精品视频在线| 亚洲蜜臀av乱码久久精品蜜桃| 中文字幕一区二区在线播放| 欧美国产精品久久| 亚洲天堂中文字幕| 亚洲人成影院在线观看| 亚洲欧美日韩久久| 亚洲一区二区精品3399| 夜夜揉揉日日人人青青一国产精品 | 一本高清dvd不卡在线观看| 成人精品一区二区三区四区| 国产99久久久久| thepron国产精品| 在线免费观看日本一区| 在线影视一区二区三区| 欧美日产在线观看| 精品欧美一区二区在线观看| 2014亚洲片线观看视频免费| 久久蜜桃香蕉精品一区二区三区| 国产清纯白嫩初高生在线观看91 | 色偷偷成人一区二区三区91| 色妹子一区二区| 欧美激情一区二区三区四区| 久久久一区二区三区| 国产欧美精品区一区二区三区| 国产精品福利一区| 午夜精品福利在线| 国产一区二区三区美女| 91美女视频网站| 欧美年轻男男videosbes| 精品免费视频一区二区| 欧美激情在线免费观看| 一区二区三区在线观看欧美| 日韩高清电影一区| 成人毛片视频在线观看| 欧美亚洲综合在线| 国产亚洲欧洲997久久综合| 亚洲三级电影全部在线观看高清| 香蕉成人伊视频在线观看| 风间由美中文字幕在线看视频国产欧美| 99久免费精品视频在线观看| 在线不卡a资源高清| 中文字幕中文字幕一区| 水蜜桃久久夜色精品一区的特点| 国产激情视频一区二区在线观看 | 国产精品毛片无遮挡高清|