亚洲欧美第一页_禁久久精品乱码_粉嫩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ù),同時去除幀內(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一区二区三区免费野_久草精品视频
日韩三级在线免费观看| 国产成人精品免费一区二区| 91亚洲国产成人精品一区二三| 久久久久久久久久久久久久久99| 国产做a爰片久久毛片| 久久久www成人免费毛片麻豆| 国产一区视频导航| 中文字幕精品在线不卡| 一本一道久久a久久精品综合蜜臀 一本一道综合狠狠老 | 国产日韩精品一区二区浪潮av| 欧美一区二区在线播放| 日本中文在线一区| 久久综合色综合88| 99久久国产免费看| 亚洲超丰满肉感bbw| 欧美一级夜夜爽| 国产精品白丝av| 亚洲精品高清视频在线观看| 777久久久精品| 国产不卡在线播放| 亚洲精品中文在线影院| 欧美裸体一区二区三区| 国产一区二区三区电影在线观看| 国产精品欧美精品| 欧美日本一道本| 国产激情精品久久久第一区二区 | 日韩限制级电影在线观看| 国产一区 二区 三区一级| 亚洲欧美偷拍三级| 欧美成人精品3d动漫h| 99国内精品久久| 麻豆91精品视频| 亚洲视频在线观看一区| 欧美一卡2卡三卡4卡5免费| 成人综合日日夜夜| 青青草97国产精品免费观看无弹窗版| 久久网站最新地址| 制服丝袜亚洲色图| 99久久99久久精品国产片果冻| 日韩经典中文字幕一区| 日韩一区在线看| 精品国产一区二区在线观看| 91丨porny丨首页| 经典一区二区三区| 亚洲18色成人| 日韩一区在线播放| 国产视频一区在线观看| 欧美高清www午色夜在线视频| gogo大胆日本视频一区| 国产一区二区三区久久久| 无吗不卡中文字幕| 亚洲丝袜另类动漫二区| 国产日韩欧美精品一区| 精品美女一区二区| 欧美精品一二三| 日本韩国欧美国产| 成人国产精品免费观看视频| 精品一区二区影视| 日产国产高清一区二区三区| 亚洲午夜羞羞片| 亚洲视频一二三区| 国产精品免费视频观看| 久久综合久久综合久久| 日韩欧美国产午夜精品| 欧美日韩色一区| 91国产精品成人| 91原创在线视频| 91麻豆免费在线观看| 成人性生交大片免费看视频在线 | 国产亚洲精品aa| 精品欧美久久久| 精品国产乱子伦一区| 精品国产伦一区二区三区观看体验 | 亚洲一区二区三区四区的| 亚洲婷婷国产精品电影人久久| 国产欧美一区二区三区鸳鸯浴| 久久久综合九色合综国产精品| 日韩免费视频一区二区| 日韩午夜激情免费电影| 日韩美女一区二区三区四区| 日韩欧美中文字幕公布| 日韩一区二区视频| 日韩免费高清电影| 精品免费日韩av| 久久久精品日韩欧美| 国产欧美日韩激情| 最新高清无码专区| 一区二区在线免费观看| 亚洲高清不卡在线| 欧美a级理论片| 国产在线不卡视频| 成人免费视频视频| 欧美在线不卡一区| 欧美精品高清视频| 精品国产一区二区三区不卡| 久久精品一区四区| 亚洲天堂精品在线观看| 午夜私人影院久久久久| 美女精品一区二区| 丰满少妇在线播放bd日韩电影| 97se亚洲国产综合在线| 欧美日韩精品二区第二页| 日韩欧美一二区| 中文字幕国产精品一区二区| 亚洲激情校园春色| 三级不卡在线观看| 国产精品综合在线视频| 91丨porny丨国产| 欧美一卡二卡在线| 国产精品电影院| 日韩成人精品在线| 国产成人免费在线| 欧美午夜片在线观看| 欧美精品一区视频| 亚洲青青青在线视频| 日韩av电影免费观看高清完整版| 国产精品69毛片高清亚洲| 91麻豆精品一区二区三区| 这里只有精品视频在线观看| 国产精品久久久一区麻豆最新章节| 亚洲电影激情视频网站| 国产美女av一区二区三区| 91福利视频在线| 久久久久99精品国产片| 亚洲午夜一区二区三区| 国产不卡视频在线观看| 91精品欧美综合在线观看最新| 亚洲国产精品成人综合| 日韩黄色免费网站| 91在线无精精品入口| 日韩欧美高清dvd碟片| 亚洲精品日韩综合观看成人91| 国产一区二区剧情av在线| 欧美日韩精品一区二区天天拍小说| 国产午夜精品一区二区三区嫩草| 天堂一区二区在线| 91日韩在线专区| 国产亚洲欧美一区在线观看| 男人的j进女人的j一区| 欧美体内she精高潮| 中文字幕日韩精品一区| 国产精品影视在线观看| 欧美一级高清大全免费观看| 亚洲精品欧美综合四区| 粉嫩欧美一区二区三区高清影视| 91麻豆精品国产| 亚洲黄网站在线观看| 成人免费视频一区| 国产亚洲欧美日韩日本| 国产真实乱对白精彩久久| 日韩一区二区免费高清| 亚洲bdsm女犯bdsm网站| 一本色道久久综合精品竹菊| 日本一区二区三区国色天香 | 久久精品国产澳门| 欧美日本一区二区三区| 亚洲一区二区在线观看视频 | 视频在线观看一区| 欧美性淫爽ww久久久久无| 国产精品成人网| www.成人网.com| 国产精品久久久久久久久免费相片| 国产一区欧美日韩| 国产日韩亚洲欧美综合| 国产乱人伦偷精品视频不卡| 精品久久一区二区三区| 免费一区二区视频| 日韩一卡二卡三卡| 六月婷婷色综合| 久久综合五月天婷婷伊人| 国产又黄又大久久| 久久久久久免费网| 国产成人免费视频一区| 中文字幕免费一区| 99久久精品国产毛片| 亚洲免费三区一区二区| 91美女在线视频| 性感美女极品91精品| 4hu四虎永久在线影院成人| 男女男精品网站| 精品国产一二三区| 国产成人在线电影| 国产精品国产三级国产三级人妇 | 欧美精品123区| 久久精品99久久久| 国产精品色哟哟网站| 一本一道波多野结衣一区二区| 亚洲韩国精品一区| 精品日韩成人av| 成人免费不卡视频| 一区二区视频在线| 欧美久久一二区| 国产综合一区二区| 亚洲欧美日韩一区| 日韩欧美一区二区在线视频| 国产一区91精品张津瑜| 玉足女爽爽91| 欧美电视剧免费全集观看| 成人午夜视频免费看| 亚洲福利国产精品|