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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ov511_diag.cpp

?? camera 驅(qū)動源碼
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
////////////////////////////////////////////////////////////////
//
// This is a diagnostics application for accessing the USB device.
// The code accesses the hardware via WinDriver functions.
// 
// Copyright (c) 2003 - 2005 Jungo Ltd.  http://www.jungo.com
// 
////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>

#if defined(USB_DIAG_SAMPLE)

#include "../../include/wdu_lib.h"
#include "../../include/status_strings.h"
#include "../../include/utils.h"

#include "ov511_diag.h"

// TODO: change the following definitions to match your device.
#define DEFAULT_VENDOR_ID 0x1234
#define DEFAULT_PRODUCT_ID 0x5678
#define DEFAULT_LICENSE_STRING "12345abcde1234.license"

#else

// use in wizard's device-specific generated code
#include "d:\windriver/include/wdu_lib.h"
#include "d:\windriver/include/status_strings.h"
#include "d:\windriver/include/utils.h"

#define DEFAULT_VENDOR_ID         0x05A9
#define DEFAULT_PRODUCT_ID        0xA511
#define DEFAULT_LICENSE_STRING    "6C3CC2BFF76637EC558F0D4D088AF4534612916A.hfl"

#endif

#define USE_DEFAULT 0xffff
#define ATTACH_EVENT_TIMEOUT 30 // in seconds
#define TRANSFER_TIMEOUT 30000 // in msecs
#if !defined(TRACE)
#define TRACE printf
#endif
#if !defined(ERR)
#define ERR printf
#endif

#define BYTES_IN_LINE 16
#define HEX_CHARS_PER_BYTE 3
#define HEX_STOP_POS BYTES_IN_LINE * HEX_CHARS_PER_BYTE

typedef struct DEVICE_CONTEXT
{
    struct DEVICE_CONTEXT *pNext;
    WDU_DEVICE_HANDLE hDevice;
    DWORD dwVendorId;
    DWORD dwProductId;
    DWORD dwInterfaceNum;
    DWORD dwAlternateSetting;
} DEVICE_CONTEXT;

typedef struct DRIVER_CONTEXT
{
    HANDLE hEvent;
    HANDLE hMutex;
    DWORD dwDeviceCount;
    DEVICE_CONTEXT *deviceContextList;
    DEVICE_CONTEXT *pActiveDev;
    HANDLE hDeviceUnusedEvent;
} DRIVER_CONTEXT;

char line[250];
DRIVER_CONTEXT DrvCtx;

BOOL DLLCALLCONV DeviceAttach(WDU_DEVICE_HANDLE hDevice, 
    WDU_DEVICE *pDeviceInfo, PVOID pUserData)
{
    DRIVER_CONTEXT *pDrvCtx = (DRIVER_CONTEXT *)pUserData;
    DEVICE_CONTEXT *pDevCtx, **ppDevCtx;
    DWORD dwInterfaceNum = pDeviceInfo->pActiveInterface->pActiveAltSetting->Descriptor.bInterfaceNumber;
    DWORD dwAlternateSetting = pDeviceInfo->pActiveInterface->pActiveAltSetting->Descriptor.bAlternateSetting;
    
    /*
    // NOTE: To change the alternate setting, call WDU_SetInterface() here
    DWORD dwAttachError;

    // TODO: replace with the requested number:
    dwAlternateSetting = %alternate_setting_number%; 

    dwAttachError = WDU_SetInterface(hDevice, dwInterfaceNum, dwAlternateSetting);
    if (dwAttachError)
    {
        ERR("DeviceAttach: WDU_SetInterface failed (num. %ld, alternate %ld) device 0x%p: error 0x%lx (\"%s\")\n",
            dwInterfaceNum, dwAlternateSetting, hDevice, 
            dwAttachError, Stat2Str(dwAttachError));

        return FALSE;
    }
    */

    TRACE("DeviceAttach: received and accepted attach for vendor id 0x%x, "
        "product id 0x%x, interface %ld, device handle 0x%p\n",
        pDeviceInfo->Descriptor.idVendor, pDeviceInfo->Descriptor.idProduct,
        dwInterfaceNum, hDevice);
    
    // Add our device to the device list
    pDevCtx = (DEVICE_CONTEXT *)malloc(sizeof(DEVICE_CONTEXT));
    if (!pDevCtx)
    {
        ERR("DeviceAttach: failed allocating memory\n");
        return FALSE;
    }
    BZERO(*pDevCtx);
    pDevCtx->hDevice = hDevice;
    pDevCtx->dwInterfaceNum = dwInterfaceNum;
    pDevCtx->dwVendorId = pDeviceInfo->Descriptor.idVendor;
    pDevCtx->dwProductId = pDeviceInfo->Descriptor.idProduct;
    pDevCtx->dwAlternateSetting = dwAlternateSetting;
    
    OsMutexLock(pDrvCtx->hMutex);
    for (ppDevCtx = &pDrvCtx->deviceContextList; *ppDevCtx; ppDevCtx = &((*ppDevCtx)->pNext));
    *ppDevCtx = pDevCtx;
    pDrvCtx->dwDeviceCount++;
    OsMutexUnlock(pDrvCtx->hMutex);
    
    OsEventSignal(pDrvCtx->hEvent);
    // Accept control over this device
    return TRUE;
}

VOID DLLCALLCONV DeviceDetach(WDU_DEVICE_HANDLE hDevice, PVOID pUserData)
{
    DRIVER_CONTEXT *pDrvCtx = (DRIVER_CONTEXT *)pUserData;
    DEVICE_CONTEXT **pCur;
    DEVICE_CONTEXT *pTmpDev;
    BOOL bDetachActiveDev = FALSE;

    TRACE("DeviceDetach: received detach for device handle 0x%p\n", hDevice);

    OsMutexLock(pDrvCtx->hMutex);
    for (pCur = &pDrvCtx->deviceContextList; 
        *pCur && (*pCur)->hDevice != hDevice; 
        pCur = &((*pCur)->pNext));
    
    if (*pCur == pDrvCtx->pActiveDev)
    {
        bDetachActiveDev = TRUE;
        pDrvCtx->pActiveDev = NULL;
    }

    pTmpDev = *pCur;
    *pCur = pTmpDev->pNext;
    free(pTmpDev);
    
    pDrvCtx->dwDeviceCount--;
    OsMutexUnlock(pDrvCtx->hMutex);

    // Detach callback must not return as long as hDevice is being used.
    if (bDetachActiveDev)
        OsEventWait(pDrvCtx->hDeviceUnusedEvent, INFINITE);
}

int OnlyForTest(WDU_DEVICE_HANDLE hDevice)
{
	return 0;
}

int CaptureRawFrameData(unsigned char *ptr)
{
	int i, k, j;
	BYTE *pBuffer, *ptemp;
	DWORD dwError, dwNum, dwBytesTransferred;

	pBuffer = (BYTE*)malloc(232562 * sizeof(BYTE));
	ptemp = pBuffer;
	for(i = 0; i < 2; i++)
	{
		dwError = WDU_TransferIsoch(DrvCtx.pActiveDev->hDevice, 0x81, TRUE, USB_ISOCH_ASAP, pBuffer,
			232562, &dwNum, 0);

		if(dwError != WD_STATUS_SUCCESS)
		{
			WDU_ResetPipe(DrvCtx.pActiveDev->hDevice, 0x81);
			WDU_ResetPipe(DrvCtx.pActiveDev->hDevice, 0x81);
		}
		else
		{
			for(j = 0; j < dwNum; j++)
			{
				//查找?guī)_始標(biāo)志
				int k = (ptemp[0] | ptemp[1] | ptemp[2] | ptemp[3] | 
					 ptemp[4] | ptemp[5] | ptemp[6] | ptemp[7]);
				int k1 = (ptemp[8] & 0xff);
				int k2 = (ptemp[8] & 0xff);
				if (k == 0 && (k1 == 24 || k2 ==25))
					 break;
				ptemp++;
			}
			ptemp += 9;
			//復(fù)制一幀原始數(shù)據(jù),同時(shí)去除幀內(nèi)的包序號
			memmove(ptr, ptemp, 951);    //復(fù)制第一包
			ptr += 951;
			ptemp += 952;
			for(k = 0; k < 119; k++)     //復(fù)制其余包
			{
				memmove(ptr, ptemp, 960); 
				ptr += 960;
				ptemp += 961;
			}
			memmove(ptr, ptemp, 32);
			break;
		}

	}
	free(pBuffer);
	return 0;
}

/*************************************************************************
以下代碼顯得如此繁瑣,其原因以下代碼是直接利用bushound捕獲的文件作為輸入,
然后編程直接生成所致。
*************************************************************************/
int InitReg(WDU_DEVICE_HANDLE hDevice)
{
	DWORD dwError,dwBytesTransferred;
	BYTE SetupPacket1[8]={0x40,0x02,0x00,0x00,0x53,0x00,0x01,0x00};
	BYTE Sd1=0x01;
	BYTE SetupPacket2[8]={0x40,0x02,0x00,0x00,0x50,0x00,0x01,0x00};
	BYTE Sd2=0x3d;
	BYTE SetupPacket3[8]={0xc0,0x03,0x00,0x00,0x5f,0x00,0x01,0x00};
	BYTE Sd3=0x6c;
	BYTE SetupPacket4[8]={0x40,0x02,0x00,0x00,0x41,0x00,0x01,0x00};
	BYTE Sd4=0xc0;
	BYTE SetupPacket5[8]={0x40,0x02,0x00,0x00,0x44,0x00,0x01,0x00};
	BYTE Sd5=0xc1;
	BYTE SetupPacket6[8]={0x40,0x02,0x00,0x00,0x42,0x00,0x01,0x00};
	BYTE Sd6=0x12;
	BYTE SetupPacket7[8]={0x40,0x02,0x00,0x00,0x45,0x00,0x01,0x00};
	BYTE Sd7=0x80;
	BYTE SetupPacket8[8]={0x40,0x02,0x00,0x00,0x40,0x00,0x01,0x00};
	BYTE Sd8=0x01;
	BYTE SetupPacket9[8]={0x40,0x02,0x00,0x00,0x41,0x00,0x01,0x00};
	BYTE Sd9=0xc0;
	BYTE SetupPacket10[8]={0x40,0x02,0x00,0x00,0x44,0x00,0x01,0x00};
	BYTE Sd10=0xc1;
	BYTE SetupPacket11[8]={0x40,0x02,0x00,0x00,0x43,0x00,0x01,0x00};
	BYTE Sd11=0x29;
	BYTE SetupPacket12[8]={0x40,0x02,0x00,0x00,0x40,0x00,0x01,0x00};
	BYTE Sd12=0x03;
	BYTE SetupPacket13[8]={0x40,0x02,0x00,0x00,0x40,0x00,0x01,0x00};
	BYTE Sd13=0x05;
	BYTE SetupPacket14[8]={0xc0,0x03,0x00,0x00,0x45,0x00,0x01,0x00};
	BYTE Sd14=0xff;
	BYTE SetupPacket15[8]={0x40,0x02,0x00,0x00,0x42,0x00,0x01,0x00};
	BYTE Sd15=0xff;
	BYTE SetupPacket16[8]={0x40,0x02,0x00,0x00,0x45,0x00,0x01,0x00};
	BYTE Sd16=0x00;
	BYTE SetupPacket17[8]={0x40,0x02,0x00,0x00,0x40,0x00,0x01,0x00};
	BYTE Sd17=0x01;
	BYTE SetupPacket18[8]={0x40,0x02,0x00,0x00,0x41,0x00,0x01,0x00};
	BYTE Sd18=0xc0;
	BYTE SetupPacket19[8]={0x40,0x02,0x00,0x00,0x44,0x00,0x01,0x00};
	BYTE Sd19=0xc1;
	BYTE SetupPacket20[8]={0x40,0x02,0x00,0x00,0x43,0x00,0x01,0x00};
	BYTE Sd20=0x29;
	BYTE SetupPacket21[8]={0x40,0x02,0x00,0x00,0x40,0x00,0x01,0x00};
	BYTE Sd21=0x03;
	BYTE SetupPacket22[8]={0x40,0x02,0x00,0x00,0x40,0x00,0x01,0x00};
	BYTE Sd22=0x05;
	BYTE SetupPacket23[8]={0xc0,0x03,0x00,0x00,0x45,0x00,0x01,0x00};
	BYTE Sd23=0xff;
	BYTE SetupPacket24[8]={0x40,0x02,0x00,0x00,0x42,0x00,0x01,0x00};
	BYTE Sd24=0xff;
	BYTE SetupPacket25[8]={0x40,0x02,0x00,0x00,0x45,0x00,0x01,0x00};
	BYTE Sd25=0x00;
	BYTE SetupPacket26[8]={0x40,0x02,0x00,0x00,0x40,0x00,0x01,0x00};
	BYTE Sd26=0x01;
	BYTE SetupPacket27[8]={0x40,0x02,0x00,0x00,0x41,0x00,0x01,0x00};
	BYTE Sd27=0xc0;
	BYTE SetupPacket28[8]={0x40,0x02,0x00,0x00,0x44,0x00,0x01,0x00};
	BYTE Sd28=0xc1;
	BYTE SetupPacket29[8]={0x40,0x02,0x00,0x00,0x42,0x00,0x01,0x00};
	BYTE Sd29=0x12;
	BYTE SetupPacket30[8]={0x40,0x02,0x00,0x00,0x45,0x00,0x01,0x00};
	BYTE Sd30=0x80;
	BYTE SetupPacket31[8]={0x40,0x02,0x00,0x00,0x40,0x00,0x01,0x00};
	BYTE Sd31=0x01;
	BYTE SetupPacket32[8]={0x40,0x02,0x00,0x00,0x41,0x00,0x01,0x00};
	BYTE Sd32=0xc0;
	BYTE SetupPacket33[8]={0x40,0x02,0x00,0x00,0x44,0x00,0x01,0x00};
	BYTE Sd33=0xc1;
	BYTE SetupPacket34[8]={0x40,0x02,0x00,0x00,0x43,0x00,0x01,0x00};
	BYTE Sd34=0x29;
	BYTE SetupPacket35[8]={0x40,0x02,0x00,0x00,0x40,0x00,0x01,0x00};
	BYTE Sd35=0x03;
	BYTE SetupPacket36[8]={0x40,0x02,0x00,0x00,0x40,0x00,0x01,0x00};
	BYTE Sd36=0x05;
	BYTE SetupPacket37[8]={0xc0,0x03,0x00,0x00,0x45,0x00,0x01,0x00};
	BYTE Sd37=0xff;
	BYTE SetupPacket38[8]={0x40,0x02,0x00,0x00,0x42,0x00,0x01,0x00};
	BYTE Sd38=0xff;
	BYTE SetupPacket39[8]={0x40,0x02,0x00,0x00,0x45,0x00,0x01,0x00};
	BYTE Sd39=0x00;
	BYTE SetupPacket40[8]={0x40,0x02,0x00,0x00,0x40,0x00,0x01,0x00};
	BYTE Sd40=0x01;
	BYTE SetupPacket41[8]={0x40,0x02,0x00,0x00,0x41,0x00,0x01,0x00};
	BYTE Sd41=0xc0;
	BYTE SetupPacket42[8]={0x40,0x02,0x00,0x00,0x44,0x00,0x01,0x00};
	BYTE Sd42=0xc1;
	BYTE SetupPacket43[8]={0x40,0x02,0x00,0x00,0x43,0x00,0x01,0x00};
	BYTE Sd43=0x29;
	BYTE SetupPacket44[8]={0x40,0x02,0x00,0x00,0x40,0x00,0x01,0x00};

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久精品tv| 亚洲免费av高清| 色av一区二区| 国产精品伊人色| 亚洲一区二区影院| 中文字幕乱码久久午夜不卡| 欧美一区二区精品| 欧日韩精品视频| 丁香五精品蜜臀久久久久99网站| 美女视频一区在线观看| 午夜不卡av免费| 亚洲欧美日韩电影| 中文字幕亚洲综合久久菠萝蜜| 日韩精品一区二区三区在线观看| 欧美这里有精品| 99久久精品国产毛片| 国产成人午夜精品影院观看视频| 裸体一区二区三区| 日韩中文字幕亚洲一区二区va在线| 亚洲私人黄色宅男| 国产精品国产三级国产aⅴ中文| 日韩欧美专区在线| 欧美电影影音先锋| 欧美网站大全在线观看| 色综合咪咪久久| 99精品视频一区| 成人激情动漫在线观看| 国产成人小视频| 国产在线精品免费| 极品少妇一区二区| 狠狠色2019综合网| 国产在线精品一区在线观看麻豆| 毛片av一区二区| 秋霞午夜鲁丝一区二区老狼| 喷水一区二区三区| 蜜桃av一区二区在线观看| 日韩精品一区第一页| 五月天国产精品| 午夜伊人狠狠久久| 日韩高清在线观看| 蜜臀av一区二区在线免费观看| 免费高清视频精品| 久久精品国产99国产| 久久国产日韩欧美精品| 国产麻豆精品久久一二三| 国产福利一区二区| 99精品视频一区二区| 欧洲精品在线观看| 欧美久久久久久久久中文字幕| 91精品国产综合久久久蜜臀粉嫩| 日韩一区二区高清| 久久在线免费观看| 国产精品对白交换视频| 一区二区在线观看视频在线观看| 亚洲综合色自拍一区| 午夜精品免费在线观看| 毛片av中文字幕一区二区| 国产精品自拍一区| 91免费国产在线| 欧美人狂配大交3d怪物一区| 欧美成人三级在线| 中文字幕制服丝袜成人av| 亚洲一区二区在线观看视频| 欧美a级一区二区| 国产精品一区二区三区网站| 91同城在线观看| 在线播放日韩导航| 久久精品亚洲一区二区三区浴池| 中文字幕日韩一区| 午夜精品爽啪视频| 懂色av一区二区夜夜嗨| 欧美中文字幕不卡| 久久久综合网站| 樱花草国产18久久久久| 激情五月激情综合网| 色综合天天综合给合国产| 91精品国产高清一区二区三区| 久久久国产精品午夜一区ai换脸| 亚洲女爱视频在线| 精品一区二区三区日韩| 91美女片黄在线观看91美女| 日韩欧美中文字幕公布| 亚洲色图19p| 久久www免费人成看片高清| 9久草视频在线视频精品| 欧美一区二区三区视频在线观看| 国产欧美一二三区| 亚洲成人1区2区| 成人教育av在线| 日韩欧美中文字幕一区| 一区二区三区精品| 国产成人综合亚洲91猫咪| 欧美亚洲国产一区二区三区 | 韩国视频一区二区| 91官网在线观看| 国产午夜精品一区二区三区视频| 午夜精品久久一牛影视| www.欧美日韩| 久久久综合精品| 三级亚洲高清视频| 色婷婷狠狠综合| 日本一二三四高清不卡| 久久精品理论片| 91.com在线观看| 成人欧美一区二区三区黑人麻豆| 激情欧美日韩一区二区| 91麻豆精品国产无毒不卡在线观看| 亚洲私人黄色宅男| 成人高清视频在线观看| 精品噜噜噜噜久久久久久久久试看 | 欧美性猛片aaaaaaa做受| 中文字幕欧美日本乱码一线二线 | 色综合久久久久久久久| 欧美国产精品劲爆| 国产一区二区三区电影在线观看 | 成人黄色av电影| 久久久久久久久久美女| 另类的小说在线视频另类成人小视频在线| 日本韩国欧美一区| 国产精品成人午夜| 成人短视频下载| 欧美精彩视频一区二区三区| 激情小说亚洲一区| 精品成人在线观看| 久久成人免费电影| 欧美一区二区三区喷汁尤物| 爽好多水快深点欧美视频| 在线观看国产91| 亚洲与欧洲av电影| 欧美性受xxxx黑人xyx性爽| 一区二区三区日韩欧美| 91免费版在线看| 亚洲一区视频在线| 欧美日韩精品一区二区| 亚洲va中文字幕| 欧美日韩aaa| 麻豆成人91精品二区三区| 精品国产乱码久久久久久1区2区 | 国产美女视频91| 国产喷白浆一区二区三区| 国产成人一区在线| 中文字幕成人av| 91一区二区三区在线播放| 亚洲欧美日韩国产综合在线| 91黄色在线观看| 亚洲成人激情社区| 日韩写真欧美这视频| 黄页视频在线91| 国产亚洲综合色| 99综合电影在线视频| 亚洲黄色av一区| 欧美一级理论性理论a| 经典三级视频一区| 国产精品少妇自拍| 在线视频观看一区| 日本视频在线一区| 国产日产欧美一区二区视频| www.日本不卡| 午夜视黄欧洲亚洲| 久久午夜国产精品| av电影天堂一区二区在线观看| 亚洲免费高清视频在线| 欧美一区二区三区免费视频| 国产一区久久久| 最新中文字幕一区二区三区| 欧美精品v国产精品v日韩精品| 久久成人羞羞网站| 亚洲欧美激情一区二区| 欧美一区二区在线播放| 国产成人99久久亚洲综合精品| 一区二区三区中文字幕精品精品| 欧美日本国产一区| 粗大黑人巨茎大战欧美成人| 亚洲一区中文日韩| 精品国产乱码久久| 在线免费观看一区| 国产精品一品二品| 亚洲一二三区在线观看| 久久夜色精品国产噜噜av| 91激情五月电影| 国产精品一区在线观看乱码| 亚洲综合久久av| 久久精品视频在线看| 欧美午夜不卡视频| 成人国产精品免费观看视频| 性做久久久久久免费观看欧美| 久久久久久久久久久黄色| 欧美三级日韩三级国产三级| 国产精品中文字幕日韩精品 | 日本va欧美va精品发布| 国产精品国产三级国产a| 欧美另类videos死尸| 99在线精品观看| 久久精品国产秦先生| 亚洲综合av网| 国产精品视频线看| 日韩美一区二区三区| 欧美午夜一区二区三区免费大片| 国产91高潮流白浆在线麻豆| 免费成人性网站|