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

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

?? jpgdriver.c

?? 6410BSP3
?? C
?? 第 1 頁 / 共 3 頁
字號:
        {
            RETAILMSG(1, (TEXT("JPG_IOControl: CeOpenCallerBuffer failed in IOCTL_JPG_GET_PHY_FRMBUF.\r\n")));
            return FALSE;
        }

        *((UINT *)pMarshalledOutBuf) = (UINT)JPG_DATA_BASE_ADDR + JPG_STREAM_BUF_SIZE + JPG_STREAM_THUMB_BUF_SIZE;
        printD("IOCTL_JPG_GET_PHY_FRMBUF : 0x%x\n", JPG_DATA_BASE_ADDR + JPG_STREAM_BUF_SIZE + JPG_STREAM_THUMB_BUF_SIZE);

        if(FAILED(CeCloseCallerBuffer(pMarshalledOutBuf, pOutBuf, nOutBufSize, ARG_O_PTR)))
        {
            RETAILMSG(1, (TEXT("JPG_IOControl: CeCloseCallerBuffer failed in IOCTL_JPG_GET_PHY_FRMBUF.\r\n")));
            return FALSE;
        }

        break;

    case IOCTL_JPG_GET_THUMB_FRMBUF:
        printD("DD::IOCTL_JPG_GET_THUMB_FRMBUF\n");

        if(FAILED(CeOpenCallerBuffer(&pMarshalledOutBuf, pOutBuf, nOutBufSize, ARG_O_PTR, FALSE)))
        {
            RETAILMSG(1, (TEXT("JPG_IOControl: CeOpenCallerBuffer failed in IOCTL_JPG_GET_THUMB_FRMBUF.\r\n")));
            return FALSE;
        }

#if    (_WIN32_WCE >= 600)
#ifdef E2E
{
            if(JPGRegCtx->frmUserThumbBuf == NULL){
                JPGRegCtx->callerProcess = (HANDLE) GetDirectCallerProcessId();
                JPGRegCtx->frmUserThumbBuf = VirtualAllocEx(JPGRegCtx->callerProcess, NULL, JPG_FRAME_THUMB_BUF_SIZE, MEM_RESERVE, PAGE_NOACCESS);
                phyAddr = JPG_DATA_BASE_ADDR+ JPG_STREAM_BUF_SIZE + JPG_STREAM_THUMB_BUF_SIZE+ JPG_FRAME_BUF_SIZE;
                result = VirtualCopyEx(JPGRegCtx->callerProcess,           // HANDLE hDstProc
                                     JPGRegCtx->frmUserThumbBuf,
                                     (HANDLE) GetCurrentProcessId(),     // HANDLE hSrcProc
                                                 (PVOID)(phyAddr >> 8),    
                                                  JPG_FRAME_THUMB_BUF_SIZE,
                                                  PAGE_PHYSICAL | PAGE_READWRITE | PAGE_NOCACHE);
                if (result == FALSE){
                    RETAILMSG(1, (L"DD::JPG VirtualCopyEx(frmUserThumbBuf) returns FALSE.\n"));
        *((UINT *)pMarshalledOutBuf) = NULL;
                    break;
                }
            }
            printD("DD::frmUserThumbBuf : 0x%x CallerProcessID : 0x%x\n", JPGRegCtx->frmUserThumbBuf, JPGRegCtx->callerProcess);
     *((UINT *)pMarshalledOutBuf) = (UINT) JPGRegCtx->frmUserThumbBuf;
}
#else
{
        JPGRegCtx->callerProcess = (HANDLE) GetDirectCallerProcessId();
        JPGRegCtx->frmUserThumbBuf = (PBYTE) VirtualAllocCopyEx((HANDLE) GetCurrentProcessId(),        // HANDLE hSrcProc
            JPGRegCtx->callerProcess,    // HANDLE hDstProc
            (LPVOID)(JPGRegCtx->v_pJPGData_Buff+ JPG_STREAM_BUF_SIZE + JPG_STREAM_THUMB_BUF_SIZE + JPG_FRAME_BUF_SIZE),
            JPG_FRAME_THUMB_BUF_SIZE,
            PAGE_READWRITE);
        if (JPGRegCtx->frmUserThumbBuf == NULL)
        {
            RETAILMSG(1, (TEXT("DD::JPG Memory Allocation Fail\r\n")));
            UnlockJPGMutex();
            return FALSE;
        }
        else
        {
            printD("DD::frmUserThumbBuf : 0x%x CallerProcessID : 0x%x\n", JPGRegCtx->frmUserThumbBuf, JPGRegCtx->callerProcess);
            *((UINT *)pMarshalledOutBuf) = (UINT) JPGRegCtx->frmUserThumbBuf;
        }
}
#endif 

#else
        *((UINT *)pMarshalledOutBuf) = (UINT) JPGRegCtx->v_pJPGData_Buff+ JPG_STREAM_BUF_SIZE + JPG_STREAM_THUMB_BUF_SIZE + JPG_FRAME_BUF_SIZE;
#endif

        if(FAILED(CeCloseCallerBuffer(pMarshalledOutBuf, pOutBuf, nOutBufSize, ARG_O_PTR)))
        {
            RETAILMSG(1, (TEXT("JPG_IOControl: CeCloseCallerBuffer failed in IOCTL_JPG_GET_THUMB_FRMBUF.\r\n")));
            return FALSE;
        }

        break;

    case IOCTL_JPG_GET_RGBBUF:
        printD("DD::IOCTL_JPG_GET_RGBBUF\n");

        if(FAILED(CeOpenCallerBuffer(&pMarshalledOutBuf, pOutBuf, nOutBufSize, ARG_O_PTR, FALSE)))
        {
            RETAILMSG(1, (TEXT("JPG_IOControl: CeOpenCallerBuffer failed in IOCTL_JPG_GET_RGBBUF.\r\n")));
            return FALSE;
        }

#if    (_WIN32_WCE >= 600)
#ifdef E2E
{
                if(JPGRegCtx->rgbBuf == NULL){
                JPGRegCtx->callerProcess = (HANDLE) GetDirectCallerProcessId();
                JPGRegCtx->rgbBuf = VirtualAllocEx(JPGRegCtx->callerProcess, NULL, JPG_RGB_BUF_SIZE, MEM_RESERVE, PAGE_NOACCESS);
                phyAddr = JPG_DATA_BASE_ADDR+ JPG_STREAM_BUF_SIZE + JPG_STREAM_THUMB_BUF_SIZE+ JPG_FRAME_BUF_SIZE+ JPG_FRAME_THUMB_BUF_SIZE;
                result = VirtualCopyEx(JPGRegCtx->callerProcess,           // HANDLE hDstProc
                                     JPGRegCtx->rgbBuf,
                                     (HANDLE) GetCurrentProcessId(),     // HANDLE hSrcProc
                                                 (PVOID)(phyAddr >> 8),    
                                                  JPG_RGB_BUF_SIZE,
                                                  PAGE_PHYSICAL | PAGE_READWRITE | PAGE_NOCACHE);
                if (result == FALSE){
                    RETAILMSG(1, (L"DD::JPG VirtualCopyEx(rgbBuf) returns FALSE.\n"));
        *((UINT *)pMarshalledOutBuf) = NULL;
                    break;
                }
                
            }
            printD("DD::rgbBuf : 0x%x CallerProcessID : 0x%x\n", JPGRegCtx->rgbBuf, JPGRegCtx->callerProcess);
     *((UINT *)pMarshalledOutBuf) = (UINT) JPGRegCtx->rgbBuf;
}
#else
{
        JPGRegCtx->callerProcess = (HANDLE) GetDirectCallerProcessId();
        JPGRegCtx->rgbBuf = (PBYTE) VirtualAllocCopyEx( (HANDLE) GetCurrentProcessId(),        // HANDLE hSrcProc
            JPGRegCtx->callerProcess,    // HANDLE hDstProc
            (LPVOID)(JPGRegCtx->v_pJPGData_Buff+ JPG_STREAM_BUF_SIZE + JPG_STREAM_THUMB_BUF_SIZE+ JPG_FRAME_BUF_SIZE + JPG_FRAME_THUMB_BUF_SIZE),
            JPG_RGB_BUF_SIZE,
            PAGE_READWRITE);
        if (JPGRegCtx->rgbBuf == NULL)
        {
            RETAILMSG(1, (TEXT("DD::JPG Memory Allocation Fail\r\n")));
            UnlockJPGMutex();
            return FALSE;
        }
        else
        {
            printD("DD::rgbBuf : 0x%x CallerProcessID : 0x%x\n", JPGRegCtx->rgbBuf, JPGRegCtx->callerProcess);
            *((UINT *)pMarshalledOutBuf) = (UINT) JPGRegCtx->rgbBuf;
        }
}
#endif

#else
        *((UINT *)pMarshalledOutBuf) = (UINT) JPGRegCtx->v_pJPGData_Buff+ JPG_STREAM_BUF_SIZE + JPG_STREAM_THUMB_BUF_SIZE+ JPG_FRAME_BUF_SIZE + JPG_FRAME_THUMB_BUF_SIZE;
#endif

        if(FAILED(CeCloseCallerBuffer(pMarshalledOutBuf, pOutBuf, nOutBufSize, ARG_O_PTR)))
        {
            RETAILMSG(1, (TEXT("JPG_IOControl: CeCloseCallerBuffer failed in IOCTL_JPG_GET_RGBBUF.\r\n")));
            return FALSE;
        }

        break;

    case IOCTL_JPG_GET_PHY_RGBBUF:
        if(FAILED(CeOpenCallerBuffer(&pMarshalledOutBuf, pOutBuf, nOutBufSize, ARG_O_PTR, FALSE)))
        {
            RETAILMSG(1, (TEXT("JPG_IOControl: CeOpenCallerBuffer failed in IOCTL_JPG_GET_PHY_RGBBUF.\r\n")));
            return FALSE;
        }

        *((UINT *)pMarshalledOutBuf) = (UINT)JPG_DATA_BASE_ADDR + JPG_STREAM_BUF_SIZE + JPG_STREAM_THUMB_BUF_SIZE+ JPG_FRAME_BUF_SIZE + JPG_FRAME_THUMB_BUF_SIZE;

        printD("IOCTL_JPG_GET_PHY_RGBBUF : 0x%x\n", JPG_DATA_BASE_ADDR + JPG_STREAM_BUF_SIZE + JPG_STREAM_THUMB_BUF_SIZE + JPG_FRAME_BUF_SIZE + JPG_FRAME_THUMB_BUF_SIZE);

        if(FAILED(CeCloseCallerBuffer(pMarshalledOutBuf, pOutBuf, nOutBufSize, ARG_O_PTR)))
        {
            RETAILMSG(1, (TEXT("JPG_IOControl: CeCloseCallerBuffer failed in IOCTL_JPG_GET_PHY_RGBBUF.\r\n")));
            return FALSE;
        }

        break;

    default :
        RETAILMSG(1, (TEXT("DD::JPG Invalid IOControl\r\n")));
    }


    UnlockJPGMutex();
    return result;
}

/*----------------------------------------------------------------------------
*Function: JPG_Write

*Parameters:         dwContext        :
*Return Value:        True/False
*Implementation Notes: Initialize JPEG Hardware
-----------------------------------------------------------------------------*/
DWORD
JPG_Write(
    DWORD OpenHandle,
    LPCVOID pBuffer,
    DWORD dwNumBytes
    )
{
    printD("DD::JPEG_Write \n");
    return 1;
}

/*----------------------------------------------------------------------------
*Function: JPEG_PowerUp

*Parameters:         dwContext        :
*Return Value:        True/False
*Implementation Notes: Initialize JPEG Hardware
-----------------------------------------------------------------------------*/
void
JPG_PowerUp(
    DWORD InitHandle
    )
{
    printD("DD::JPEG_PowerUp \n");
}

/*----------------------------------------------------------------------------
*Function: JPEG_PowerDown

*Parameters:         dwContext        :
*Return Value:        True/False
*Implementation Notes: Initialize JPEG Hardware
-----------------------------------------------------------------------------*/
void
JPG_PowerDown(
    DWORD InitHandle
    )
{
    printD("DD::JPEG_PowerDown(instanceNo : %d \n", instanceNo);

    if(instanceNo > 0)
    {
        PowerChange = TRUE;
        Delay(MAX_PROCESSING_THRESHOLD);
    }

    JPGPowerControl(FALSE);
}

/*----------------------------------------------------------------------------
*Function: JPGPowerControl
*Implementation Notes: JPEG Power on/off
-----------------------------------------------------------------------------*/
static void
JPGPowerControl(
    BOOL bOnOff
    )
{
    DWORD dwIPIndex = PWR_IP_JPEG;
    DWORD dwBytes;
    static int isOn = 0;

    printD("DD::JPEG Power Control\n");
    
    // JPEG clock
    if (!bOnOff)
    {
        if(isOn == 1)
        {
            printD("JPEG powerOFF\n");
            isOn = 0;

            s6410PWR->HCLK_GATE &= ~(JPG_1BIT_MASK << JPG_HCLK_JPEG_BIT); // JPEG clock disable
            s6410PWR->SCLK_GATE &= ~(JPG_1BIT_MASK << JPG_SCLK_JPEG_BIT); // JPEG clock disable

            if ( !DeviceIoControl(hPwrControl, IOCTL_PWRCON_SET_POWER_OFF, &dwIPIndex, sizeof(DWORD), NULL, 0, &dwBytes, NULL) )
            {
                RETAILMSG(1, (TEXT("DD::JPG IOCTL_PWRCON_SET_POWER_OFF Failed\r\n")));
            }
        }
    }
    else
    {
        if(isOn == 0)
        {
            printD("JPEG powerON\n");
            isOn = 1;

            if ( !DeviceIoControl(hPwrControl, IOCTL_PWRCON_SET_POWER_ON, &dwIPIndex, sizeof(DWORD), NULL, 0, &dwBytes, NULL) )
            {
                RETAILMSG(1, (TEXT("DD::JPG IOCTL_PWRCON_SET_POWER_ON Failed\r\n")));
            }

            s6410PWR->HCLK_GATE |= (JPG_1BIT_MASK << JPG_HCLK_JPEG_BIT); // JPEG clock enable
            s6410PWR->SCLK_GATE |= (JPG_1BIT_MASK << JPG_SCLK_JPEG_BIT); // JPEG clock enable
        }
    }
}


/*----------------------------------------------------------------------------
*Function: JPGSetClkDiv
*Implementation Notes: set JPG clock
-----------------------------------------------------------------------------*/
static BOOL
JPGSetClkDiv(
    int divider
    )
{
    if ((divider < 1) || (divider > 16))
    {
        RETAILMSG(1, (L"JPGSetClkDiv: JPG clock divider must be 1 ~ 16.\n\r"));
        return FALSE;
    }

    // S3C6410 JPEG clock ratio must be odd value.
    // If you want to set quater clock(1/4) to CLKJPG, you have to set 3(odd value) to JPEG_RATIO field.
    // As below calcuration, this function's parameter must be 4.
    s6410PWR->CLK_DIV0 = (s6410PWR->CLK_DIV0 & ~(JPG_4BIT_MASK << JPG_JPEG_RATIO_BIT)) | ((divider - 1) << JPG_JPEG_RATIO_BIT);

    return TRUE;
}

/*----------------------------------------------------------------------------
*Function: Delay
*Implementation Notes: delay during count milisecond
-----------------------------------------------------------------------------*/
static void
Delay(
    UINT32 count
    )
{
    volatile int i, j = 0;
    volatile static int loop = APLL_CLK/100000;

    for(;count > 0;count--)
        for(i=0;i < loop; i++)
        {
            j++;
        }
}

/*----------------------------------------------------------------------------
*Function: JPEG_DllMain

*Parameters:         DllInstance        :
                    Reason            :
                    Reserved        :
*Return Value:        True/False
*Implementation Notes: Entry point for JPEG.dll
-----------------------------------------------------------------------------*/
BOOL WINAPI
JPG_DllMain(
    HINSTANCE DllInstance,
    DWORD Reason,
    LPVOID Reserved
    )
{
    switch(Reason)
    {
        case DLL_PROCESS_ATTACH:
            DEBUGREGISTER(DllInstance);
            break;
    }

    return TRUE;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品免费观看| 成人在线一区二区三区| 国产日韩成人精品| 欧美综合欧美视频| 国产成人精品影视| 日韩电影在线免费| 亚洲人成网站精品片在线观看| 在线91免费看| 色av一区二区| 国产精品夜夜嗨| 奇米777欧美一区二区| 中文字幕中文乱码欧美一区二区| 欧美一区二区免费| 欧美美女黄视频| 国产一二精品视频| 天天综合色天天综合| 日韩理论片中文av| 久久婷婷综合激情| 日韩一二在线观看| 欧美性极品少妇| 99热这里都是精品| 国产成人久久精品77777最新版本| 五月激情丁香一区二区三区| 亚洲男帅同性gay1069| 国产午夜精品久久久久久久| 日韩欧美二区三区| 欧美精选一区二区| 欧美天堂一区二区三区| 色噜噜偷拍精品综合在线| eeuss影院一区二区三区| 国产一区二区在线观看视频| 免费的国产精品| 天堂一区二区在线| 亚洲sss视频在线视频| 一区二区三区四区激情| 亚洲欧洲色图综合| 日韩美女啊v在线免费观看| 国产精品免费人成网站| 国产欧美一区视频| 国产欧美日韩在线视频| 久久精品亚洲麻豆av一区二区| 日韩免费性生活视频播放| 欧美精品自拍偷拍| 欧美日本一区二区三区| 8v天堂国产在线一区二区| 欧美日韩一区二区三区视频| 欧美日本一道本| 欧美精品99久久久**| 欧美日韩大陆一区二区| 欧美日韩aaa| 欧美电影免费观看完整版| 91精品国产乱码久久蜜臀| 日韩三级在线免费观看| 日韩精品一区二区三区中文不卡| 日韩亚洲电影在线| 欧美电视剧在线观看完整版| 久久久亚洲高清| 国产精品天干天干在线综合| 国产精品第四页| 一二三四区精品视频| 亚洲二区视频在线| 日韩av在线播放中文字幕| 另类综合日韩欧美亚洲| 国产91丝袜在线播放九色| 波多野结衣的一区二区三区| 91影院在线观看| 欧美精品一级二级三级| 欧美日韩精品一区二区天天拍小说| 日韩欧美国产1| 欧美tickle裸体挠脚心vk| 精品国产污污免费网站入口| 国产片一区二区| 艳妇臀荡乳欲伦亚洲一区| 99精品视频中文字幕| 91久久香蕉国产日韩欧美9色| 欧美日韩高清在线播放| 久久久综合激的五月天| 中文字幕亚洲区| 亚洲国产视频a| 经典三级视频一区| 一本大道久久精品懂色aⅴ| 欧美人妇做爰xxxⅹ性高电影| 日韩欧美一级二级三级| 国产精品视频一区二区三区不卡 | 欧美成人激情免费网| 中文字幕国产一区二区| 亚洲成人在线观看视频| 国产专区欧美精品| 欧洲另类一二三四区| 欧美电视剧在线观看完整版| 亚洲日本青草视频在线怡红院 | 国产精品久久久久一区二区三区| 亚洲欧美日韩国产手机在线| 麻豆久久久久久| 91看片淫黄大片一级在线观看| 欧美一级高清大全免费观看| ●精品国产综合乱码久久久久| 日韩国产一二三区| 99久久亚洲一区二区三区青草| 69堂精品视频| 综合中文字幕亚洲| 久久99国产精品久久99| 91国产丝袜在线播放| 久久久久久久久99精品| 亚洲mv大片欧洲mv大片精品| 播五月开心婷婷综合| 欧美成人女星排行榜| 亚洲一二三区在线观看| 成人午夜视频福利| 日韩视频一区二区在线观看| 一二三区精品福利视频| 成人永久aaa| 久久久美女毛片| 捆绑调教美女网站视频一区| 欧美色精品在线视频| 亚洲欧洲在线观看av| 国产成人精品免费看| 日韩女优视频免费观看| 天天色综合成人网| 色综合久久久久综合99| 亚洲国产精品成人久久综合一区| 极品少妇一区二区| 欧美一级久久久久久久大片| 亚洲一线二线三线久久久| 99久久精品免费看| 欧美—级在线免费片| 国产精品综合二区| 久久亚洲精精品中文字幕早川悠里 | 日韩精品成人一区二区在线| 欧美成人午夜电影| 亚洲成人福利片| 色婷婷久久久亚洲一区二区三区| 中文字幕av资源一区| 国产乱码精品1区2区3区| 欧美大尺度电影在线| 日韩高清一区二区| 欧美高清一级片在线| 日韩经典中文字幕一区| 欧美喷潮久久久xxxxx| 偷窥国产亚洲免费视频| 欧美吞精做爰啪啪高潮| 亚洲福中文字幕伊人影院| 欧美丝袜丝交足nylons| 天天做天天摸天天爽国产一区| 欧美日韩一区二区三区四区| 日韩一区有码在线| 波多野结衣91| 中文字幕一区二区不卡| 91在线精品一区二区三区| 一区视频在线播放| 91麻豆swag| 亚洲一区二区三区四区不卡| 欧美午夜影院一区| 亚洲成va人在线观看| 6080午夜不卡| 免费观看在线综合| 精品1区2区在线观看| 国产成人在线视频免费播放| 久久久一区二区三区捆绑**| a美女胸又www黄视频久久| 日韩伦理免费电影| 欧美日韩亚洲综合在线 | 在线不卡免费欧美| 裸体一区二区三区| 久久久久国产精品免费免费搜索 | 欧美日韩国产另类不卡| 麻豆freexxxx性91精品| 国产亚洲午夜高清国产拍精品| 岛国av在线一区| 亚洲午夜久久久久久久久电影网| 欧美另类变人与禽xxxxx| 激情伊人五月天久久综合| 国产精品网站在线播放| 欧美色图激情小说| 国产在线视频不卡二| 亚洲日本欧美天堂| 日韩久久久精品| 色综合久久久久久久| 久久激情五月婷婷| 亚洲色欲色欲www| 日韩欧美久久一区| 波多野结衣亚洲一区| 日韩高清不卡一区二区| 中文字幕电影一区| 欧美一级日韩一级| 播五月开心婷婷综合| 免费观看成人鲁鲁鲁鲁鲁视频| 中文字幕高清一区| 日韩亚洲欧美一区| 色狠狠一区二区三区香蕉| 国内精品在线播放| 亚洲成人在线网站| 亚洲国产成人在线| 欧美三级乱人伦电影| 国产伦精品一区二区三区免费迷| 国产蜜臀av在线一区二区三区| 欧美精品在线观看一区二区| 国产精品中文字幕日韩精品| 亚洲第一主播视频| 中文字幕va一区二区三区|