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

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

?? pindriver.cpp.svn-base

?? PXA270 平臺 Windows Mobile 5 攝像頭驅動
?? SVN-BASE
字號:
/**************************************************************************

** INTEL CONFIDENTIAL
** Copyright 2000-2004 Intel Corporation. All Rights Reserved.
**
** The source code contained or described herein and all documents
** related to the source code (Material) are owned by Intel Corporation
** or its suppliers or licensors.  Title to the Material remains with
** Intel Corporation or its suppliers and licensors. The Material contains
** trade secrets and proprietary and confidential information of Intel
** or its suppliers and licensors. The Material is protected by worldwide
** copyright and trade secret laws and treaty provisions. No part of the
** Material may be used, copied, reproduced, modified, published, uploaded,
** posted, transmitted, distributed, or disclosed in any way without Intel抯
** prior express written permission.

** No license under any patent, copyright, trade secret or other intellectual
** property right is granted to or conferred upon you by disclosure or
** delivery of the Materials, either expressly, by implication, inducement,
** estoppel or otherwise. Any license under such intellectual property rights
** must be express and approved by Intel in writing.

********************************************************************************/

//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
/*++


Module Name:

    PinDriver.cpp

Abstract:

    Implementation of Pin subdevice for Intel PXA27x Mainstone II Direct Show camera driver.

Notes:
    

Revision History:

--*/

#include <windows.h>
#include <devload.h>
#include <nkintr.h>
#include <camera.h>
#include "CameraDriver.h"
#include "PinDriver.h"


EXTERN_C
DWORD
PIN_Init(
    LPCTSTR Context,
    LPVOID lpvBusContext
    )
{    
    DEBUGMSG( ZONE_INIT, ( _T("PIN_Init: context %s\n"), Context ) );
    PPININITHANDLE pPinInitDev = NULL;

    if( OEM_CERTIFY_TRUST != CeGetCallerTrust() )
    {
        SetLastError(ERROR_ACCESS_DENIED);
    }
    else
    {
        pPinInitDev = new PININITHANDLE;
        
        if ( NULL != pPinInitDev )
        {
            pPinInitDev->pCamDevice = reinterpret_cast<PCAMERADEVICE>( lpvBusContext );

            if ( NULL == pPinInitDev->pCamDevice )
            {
                SetLastError( ERROR_INVALID_HANDLE );
                SAFEDELETE( pPinInitDev );
                DEBUGMSG( ZONE_INIT|ZONE_ERROR, ( _T("PIN_Init: Initialization Failed") ) );
            }
        }
        else
        {
            SetLastError( ERROR_OUTOFMEMORY );
        }
        
        DEBUGMSG( ZONE_INIT, ( _T("PIN_Init: returning 0x%08x\r\n"), reinterpret_cast<DWORD>( pPinInitDev ) ) );
    }
    return reinterpret_cast<DWORD>( pPinInitDev );
}


EXTERN_C
BOOL
PIN_Deinit(
    DWORD dwContext
    )
{
    DEBUGMSG( ZONE_INIT, ( _T("PIN_Deinit\r\n") ) );

    PPININITHANDLE pPinInitDev = reinterpret_cast<PPININITHANDLE>( dwContext );
    SAFEDELETE( pPinInitDev ) ;

    return TRUE;
}


EXTERN_C
BOOL
PIN_IOControl(
    DWORD  dwContext,
    DWORD  Ioctl,
    PUCHAR pInBufUnmapped,
    DWORD  InBufLen, 
    PUCHAR pOutBufUnmapped,
    DWORD  OutBufLen,
    PDWORD pdwBytesTransferred
   )
{
    DEBUGMSG(ZONE_FUNCTION, ( _T("PIN_IOControl(%08x): IOCTL:0x%x, InBuf:0x%x, InBufLen:%d, OutBuf:0x%x, OutBufLen:0x%x)\r\n"), dwContext, Ioctl, pInBufUnmapped, InBufLen, pOutBufUnmapped, OutBufLen ) );

    DWORD      dwErr      = ERROR_INVALID_PARAMETER;
    BOOL       bRc        = FALSE;
    PPINDEVICE pPinDevice = reinterpret_cast<PPINDEVICE>( dwContext );
    UCHAR * pInBuf = NULL;
    UCHAR * pOutBuf = NULL;
    
    
    pInBuf = (UCHAR*) MapCallerPtr( pInBufUnmapped, InBufLen );
    if (( pInBuf == NULL ) && ( pInBufUnmapped != NULL ))
    {
        DEBUGMSG( ZONE_IOCTL|ZONE_ERROR, ( _T("CAM_IOControl(%08x): CAM_IOControl. MapCallerPtr failed for incoming buffer.\r\n"), dwContext ) );

        return dwErr;
    }

    pOutBuf = (UCHAR*) MapCallerPtr( pOutBufUnmapped, OutBufLen );
    if (( NULL == pOutBuf ) && ( pOutBufUnmapped != NULL ))
    {
        DEBUGMSG( ZONE_IOCTL|ZONE_ERROR, ( _T("CAM_IOControl(%08x): CAM_IOControl. MapCallerPtr failed for incoming buffer.\r\n"), dwContext ) );

        return dwErr;
    }

    if ( NULL == MapCallerPtr( pdwBytesTransferred, sizeof ( DWORD ) ) )
    {
        DEBUGMSG( ZONE_IOCTL|ZONE_ERROR, ( _T("PIN_IOControl(%08x): PIN_IOControl. MapCallerPtr failed for dwBytesTransferred.\r\n"), dwContext ) );
        return dwErr;
    }
        
    switch ( Ioctl )
    {
    case IOCTL_CS_PROPERTY:
        DEBUGMSG( ZONE_IOCTL, ( _T("PIN_IOControl(%08x): IOCTL_CS_PROPERTY\r\n"), dwContext ) );

        __try 
        {
            CSPROPERTY csProp = {0};

            if ( ( NULL == pInBuf )
                 || ( InBufLen < sizeof ( CSPROPERTY ) )
                 || ( NULL == pdwBytesTransferred ) )
            {
                break;
            }
            
            if( !CeSafeCopyMemory( &csProp, pInBuf, sizeof( CSPROPERTY )))
            {
                break;
            }
            
            if ( TRUE == IsEqualGUID( csProp.Set, CSPROPSETID_Connection ) )
            {   
                dwErr = pPinDevice->PinHandleConnectionRequests( &csProp, pOutBuf, OutBufLen, pdwBytesTransferred );
            }
            else if ( TRUE == IsEqualGUID( csProp.Set, CSPROPSETID_VPConfig ) )
            {   
                dwErr = pPinDevice->PinHandleVPConfigRequests( &csProp, pOutBuf, OutBufLen, pdwBytesTransferred );
            }
            else
            {
                DEBUGMSG( ZONE_IOCTL|ZONE_ERROR, ( _T("PIN_IOControl(%08x): Unsupported PropertySet Request for IOCTL_CS_PROPERTY%u\r\n"), dwContext, csProp.Set ) );
                dwErr = ERROR_NOT_SUPPORTED;
            }
        }
        __except ( EXCEPTION_EXECUTE_HANDLER )
        {
            DEBUGMSG( ZONE_IOCTL, ( _T("PIN_IOControl(%08x):Exception in IOCTL_CS_PROPERTY"), dwContext ) );
        }

        break;


    case IOCTL_CS_BUFFERS:
        DEBUGMSG( ZONE_IOCTL, ( _T("PIN_IOControl(%08x): IOCTL_CS_BUFFERS\r\n"), dwContext ) );

        __try
        {
            DWORD  dwCommand;

            if(    ( NULL == pOutBuf )
                || ( NULL == pInBuf )
                || ( NULL == pdwBytesTransferred )
                || ( InBufLen  < sizeof( DWORD ))
                || ( OutBufLen < sizeof( CS_STREAM_DESCRIPTOR ))
                || ( !CeSafeCopyMemory( &dwCommand, pInBuf, sizeof( DWORD ))))
            {
                if( pdwBytesTransferred )
                {
                    *pdwBytesTransferred = sizeof( CS_STREAM_DESCRIPTOR );
                }

                DEBUGMSG( ZONE_IOCTL|ZONE_ERROR, ( _T("PIN_IOControl(%08x): IOCTL_CS_BUFFERS. Invalid parameters\r\n"), dwContext ) );
                break;
            }

            dwErr = pPinDevice->PinHandleBufferRequest( dwCommand, pOutBuf, OutBufLen );
        }
        __except ( EXCEPTION_EXECUTE_HANDLER )
        {
            DEBUGMSG( ZONE_IOCTL, ( _T("PIN_IOControl(%08x):Exception in IOCTL_CS_BUFFERS"), dwContext ) );
        }

        break;


    case IOCTL_STREAM_INSTANTIATE:
        __try 
        {
            DEBUGMSG( ZONE_IOCTL, ( _T("PIN_IOControl(%08x): IOCTL_STREAM_INSTANTIATE\r\n"), dwContext ) );

            CSPROPERTY_STREAMEX_S csPropStreamEx = {0};
            
            if ( ( NULL == pInBuf )
                 || ( InBufLen < sizeof ( CSPROPERTY_STREAMEX_S ) )
                 || ( NULL == pdwBytesTransferred ) )
            {
                DEBUGMSG( ZONE_IOCTL|ZONE_ERROR, ( _T("PIN_IOControl(%08x): IOCTL_STREAM_INSTANTIATE. Insufficient buffer\r\n"), dwContext ) );
                break;
            }
            
            CeSafeCopyMemory( &csPropStreamEx, pInBuf, sizeof( CSPROPERTY_STREAMEX_S ));

            if ( TRUE == IsEqualGUID( csPropStreamEx.CsPin.Property.Set, CSPROPSETID_StreamEx ) )
            {
                switch ( csPropStreamEx.CsPin.Property.Id )
                {
                case CSPROPERTY_STREAMEX_INIT:
                    dwErr = pPinDevice->StreamInstantiate( &csPropStreamEx, pOutBuf, OutBufLen, pdwBytesTransferred );
                    break;

                default:
                    DEBUGMSG( ZONE_IOCTL|ZONE_ERROR, ( _T("PIN_IOControl(%08x): Invalid Request\r\n"), dwContext ) );
                    break;
                }
            }
            else
            {
                DEBUGMSG( ZONE_IOCTL, ( _T("PIN_IOControl(%08x): Unsupported PropertySet Request for IOCTL_STREAM_INSTANTIATE%u\r\n"), dwContext, csPropStreamEx.CsPin.Property.Set ) );
                dwErr = ERROR_NOT_SUPPORTED;
            }
        }
        __except ( EXCEPTION_EXECUTE_HANDLER )
        {
            DEBUGMSG( ZONE_IOCTL|ZONE_ERROR, ( _T("PIN_IOControl(%08x):Exception in IOCTL_STREAM_INSTANTIATE"), dwContext ) );
        }

        break;
    
    default:
        DEBUGMSG( ZONE_IOCTL|ZONE_ERROR, ( _T("PIN_IOControl(%08x): Unsupported IOCTL code %u\r\n"), dwContext, Ioctl ) );
        dwErr = ERROR_NOT_SUPPORTED;
        break;
    }

    // pass back appropriate response codes
    SetLastError(dwErr);
    return ( ( dwErr == ERROR_SUCCESS ) ? TRUE : FALSE );
}


EXTERN_C
DWORD
PIN_Open(
    DWORD Context, 
    DWORD Access,
    DWORD ShareMode
    )
{
    DEBUGMSG( ZONE_FUNCTION, ( _T("PIN_Open(%x, 0x%x, 0x%x)\r\n"), Context, Access, ShareMode ) );

    UNREFERENCED_PARAMETER( ShareMode );
    UNREFERENCED_PARAMETER( Access );

    // TODO : HANDLE ShareMode and Access parameters
    
    PPININITHANDLE pPinInit = reinterpret_cast<PPININITHANDLE>( Context );

    ASSERT( NULL != pPinInit );
    PPINDEVICE pPinDevice = new PINDEVICE;

    if ( NULL == pPinDevice )
    {
        DEBUGMSG( ZONE_FUNCTION, ( _T("PIN_Open(%x): Not enough memory to create pin device\r\n"), Context ) );
    }
    else
    {
        if ( false == pPinDevice->InitializeSubDevice( pPinInit->pCamDevice ) )
        {
            SAFEDELETE( pPinDevice );
            DEBUGMSG( ZONE_INIT|ZONE_ERROR, ( _T("PIN_Init: Initialization Failed") ) );
        }
    }

    return reinterpret_cast<DWORD>( pPinDevice );
}


EXTERN_C
BOOL  
PIN_Close(
    DWORD Context
    ) 
{
    DEBUGMSG( ZONE_FUNCTION, ( _T("PIN_Close(%x)\r\n"), Context ) );
    
    PPINDEVICE pPinDev = reinterpret_cast<PPINDEVICE>( Context );
    pPinDev->CloseSubDevice( );
    SAFEDELETE( pPinDev );
    
    return TRUE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产另类不卡| 在线播放91灌醉迷j高跟美女 | 欧美一区二区在线不卡| 一区二区三区在线免费播放| 成人免费视频网站在线观看| 国产午夜精品一区二区| 国产精品亚洲第一| 久久综合久久鬼色中文字| 狠狠色狠狠色综合| 欧美高清在线一区二区| 成人动漫视频在线| 亚洲激情网站免费观看| 欧美日韩久久久一区| 9久草视频在线视频精品| 一区二区三区在线播放| 国产人妖乱国产精品人妖| 99麻豆久久久国产精品免费| 激情偷乱视频一区二区三区| 午夜影院在线观看欧美| 欧美大片一区二区| 国产精品一区2区| 男人的天堂久久精品| 久久综合九色综合欧美亚洲| 欧美日韩成人综合| 日本韩国视频一区二区| 免费不卡在线观看| 视频一区中文字幕国产| 日本一区二区免费在线| 久久久99精品久久| 337p粉嫩大胆噜噜噜噜噜91av| 欧美久久久久久久久中文字幕| 欧洲精品一区二区三区在线观看| 日产欧产美韩系列久久99| 日本一区二区视频在线观看| 精品国产乱码久久久久久闺蜜| 91国在线观看| 色视频一区二区| 韩国毛片一区二区三区| 精品中文字幕一区二区| 亚洲卡通欧美制服中文| 综合久久给合久久狠狠狠97色 | 久久精品水蜜桃av综合天堂| 精品奇米国产一区二区三区| 一本一本久久a久久精品综合麻豆| 成人性生交大合| av激情成人网| 色综合久久综合| 欧美性做爰猛烈叫床潮| 国产99久久久国产精品潘金| 亚洲成国产人片在线观看| 亚洲成人激情自拍| 日韩专区欧美专区| 久久9热精品视频| 午夜精品久久久久影视| 中文字幕一区二区三区不卡| 精品国产网站在线观看| 久久夜色精品一区| 国产精品久久久久久妇女6080| 日韩西西人体444www| 欧美色大人视频| 色婷婷综合激情| 欧美日韩一区中文字幕| 欧美电视剧免费全集观看| 国产亚洲一区字幕| 亚洲欧美视频一区| 中文字幕不卡的av| 亚洲一区二区视频在线观看| 亚洲精品免费看| 天天综合色天天综合色h| 美女视频免费一区| 欧美aaa在线| 成人免费黄色大片| 欧美日韩一本到| 久久久久成人黄色影片| 久久这里只有精品视频网| 中文字幕一区二区三区在线观看| 亚洲福中文字幕伊人影院| 亚洲欧洲成人精品av97| 天堂久久一区二区三区| 国产精品 欧美精品| 国产精品伊人色| 91精彩视频在线观看| 日韩欧美一区中文| 1000部国产精品成人观看| 日韩高清在线一区| 不卡大黄网站免费看| 91精品国产综合久久国产大片| 国产色综合一区| 日韩高清中文字幕一区| 99久久久无码国产精品| 在线免费不卡电影| 久久久精品黄色| 偷拍日韩校园综合在线| 成人精品亚洲人成在线| 欧美一区二区三区视频免费 | 日韩中文字幕1| 成人国产精品免费网站| 日韩一区二区三区高清免费看看| 国产精品对白交换视频| 久久超碰97中文字幕| 在线视频欧美精品| 中文字幕不卡的av| 久久99精品久久久| 欧美男人的天堂一二区| 成人欧美一区二区三区| 麻豆国产欧美日韩综合精品二区 | 激情图片小说一区| 欧美巨大另类极品videosbest | 亚洲靠逼com| 国产在线精品一区二区夜色| 日韩精品乱码免费| 一本色道久久综合狠狠躁的推荐| 久久久欧美精品sm网站| 日韩在线一区二区三区| 欧美影院午夜播放| 国产精品欧美久久久久无广告| 亚洲免费观看高清| 国产成人亚洲综合a∨猫咪| 日韩精品一区二区三区蜜臀| 亚洲制服丝袜av| 色综合久久中文字幕综合网| 国产精品久久久爽爽爽麻豆色哟哟 | 中文字幕一区免费在线观看| 国产尤物一区二区| 欧美不卡激情三级在线观看| 亚洲超碰精品一区二区| 91精品1区2区| 一区二区三区免费看视频| 97国产精品videossex| 国产精品美女久久久久久久久| 国产麻豆成人精品| 亚洲精品一区二区三区香蕉| 免费看日韩a级影片| 日韩午夜激情视频| 免费成人深夜小野草| 日韩视频不卡中文| 六月丁香婷婷久久| 337p粉嫩大胆噜噜噜噜噜91av| 激情成人综合网| 国产婷婷色一区二区三区在线| 精彩视频一区二区三区| 久久久综合精品| 从欧美一区二区三区| 亚洲国产成人私人影院tom| 成人av网站免费| 亚洲欧美偷拍三级| 欧美色网一区二区| 日本美女一区二区| 欧美成人猛片aaaaaaa| 国产一区二区伦理片| 亚洲国产精品成人综合色在线婷婷| 粉嫩嫩av羞羞动漫久久久| 成人欧美一区二区三区黑人麻豆| 91片在线免费观看| 欧美高清在线视频| 色哟哟日韩精品| 91社区在线播放| 亚洲国产视频直播| 欧美一区二区美女| 国产高清亚洲一区| 亚洲色图欧美激情| 欧美精品丝袜久久久中文字幕| 奇米影视一区二区三区| 国产亚洲一区二区三区四区 | 日产欧产美韩系列久久99| 欧美成人一区二区三区在线观看 | 日韩中文字幕91| 国产日韩欧美综合一区| 色拍拍在线精品视频8848| 日韩和欧美的一区| 国产欧美一区二区精品忘忧草| www.亚洲人| 日韩av中文字幕一区二区| 国产日韩欧美精品电影三级在线| 99国产一区二区三精品乱码| 午夜精品久久久久久久99樱桃| 精品久久久久久无| 91麻豆高清视频| 九色porny丨国产精品| 亚洲欧美偷拍三级| 日韩一区二区在线免费观看| 成人激情动漫在线观看| 午夜精品一区二区三区免费视频| 国产亚洲欧洲997久久综合| 91福利国产精品| 国产黄色91视频| 婷婷开心久久网| 国产精品理伦片| 日韩精品一区二区三区三区免费 | 国产欧美日韩精品在线| 欧美日韩国产免费一区二区 | 亚洲一区在线免费观看| 国产三级三级三级精品8ⅰ区| 精品视频在线视频| 成人永久aaa| 精品在线一区二区三区| 亚洲香蕉伊在人在线观| 国产精品每日更新| 精品粉嫩aⅴ一区二区三区四区| 欧美日韩在线精品一区二区三区激情 |