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

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

?? sdmain.cpp

?? S3C2443 WINCE6.0 BSP
?? CPP
字號:
//
// 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.
//

// Copyright (c) 2002 BSQUARE Corporation.  All rights reserved.
// DO NOT REMOVE --- BEGIN EXTERNALLY DEVELOPED SOURCE CODE ID 40973--- DO NOT REMOVE

// Driver entry points for bus driver    

#include "SDBusDriver.h"
#include <bldver.h>

// initialize debug zones
SD_DEBUG_INSTANTIATE_ZONES(
                           TEXT("SDBusDriver"), // module name
                           ZONE_ENABLE_INIT | ZONE_ENABLE_ERROR | ZONE_ENABLE_WARN,
                           TEXT("HC Driver Load"),
                           TEXT("Dispatcher"), 
                           TEXT("Shutdown"), 
                           TEXT("Power"),                  
                           TEXT("Device Load"), 
                           TEXT("Bus Requests"), 
                           TEXT("Buffer Dumps"), 
                           TEXT(""),
                           TEXT(""),
                           TEXT(""),
                           TEXT(""));

// the ONLY instance of the bus driver
static CSDBusDriver        *s_pSDBusDriver;
static BOOL                 s_fBusAccessContext; // Dummy data to use as a pointer


///////////////////////////////////////////////////////////////////////////////
//  DllEntry - the main dll entry point
//  Input:  hInstance - the instance that is attaching
//          Reason - the reason for attaching
//          pReserved - not much
//  Output: 
//  Return: Always returns TRUE
//  Notes:  this is only used to initialize the zones
///////////////////////////////////////////////////////////////////////////////
extern "C"
BOOL DllEntry(HINSTANCE  hInstance,
              ULONG      Reason,
              LPVOID     pReserved)
{
    BOOL fRet = TRUE;

    if ( Reason == DLL_PROCESS_ATTACH ) {
        s_pSDBusDriver = NULL;
        DEBUGMSG(SDCARD_ZONE_INIT, (TEXT("SDBusDriver: PROCESS_ATTACH \n")));
        DisableThreadLibraryCalls((HMODULE) hInstance);
        SD_DEBUG_ZONE_REGISTER(hInstance, NULL);

        if (!SDInitializeCardLib()) {
            fRet = FALSE;
        }
    }
    else if ( Reason == DLL_PROCESS_DETACH ) {
        DEBUGMSG(SDCARD_ZONE_INIT, (TEXT("SDBusDriver: PROCESS_DETACH \n")));
        SDDeinitializeCardLib();
    }

    return fRet;
}

///////////////////////////////////////////////////////////////////
//  ShutDownBusDriverInstance - shutdown the bus driver instance
//  Input:  dwContext - context passed into XXX_Deinit
//  Output:
//  Return: BOOL
//  Notes:  
//         
////////////////////////////////////////////////////////////////////
BOOL ShutDownBusDriverInstance(DWORD dwContext)
{
    BOOLEAN ret = TRUE; // return value

    // check the single instance
    if (s_pSDBusDriver != NULL)  {        
        RETAILMSG(1, ((TEXT("SDBusDriver: Shutting Down Bus Driver...\n"))));
        delete s_pSDBusDriver;
        s_pSDBusDriver = NULL;
    } else {
        RETAILMSG(1, ((TEXT("SDBusDriver: Bus Driver already shutdown! \n"))));
        ret = FALSE;
    }

    return ret;
}



///////////////////////////////////////////////////////////////////////////////
//  SDC_Close - the close entry point for the bus driver
//  Input:  hOpenContext - the context returned from SDC_Open
//  Output: 
//  Notes:  always returns TRUE
///////////////////////////////////////////////////////////////////////////////
extern "C"
BOOL SDC_Close(DWORD hOpenContext)
{
    DEBUGMSG(SDCARD_ZONE_FUNC, (TEXT("SDBusDriver: +-SDC_Close\n")));

    return TRUE;
}


///////////////////////////////////////////////////////////////////////////////
//  SDC_PreDeinit - the predeinit entry point for the SD bus driver
//  Input:  hDeviceContext - the context returned from SDC_Init
//  Output: 
//  Notes:  always returns TRUE.  
///////////////////////////////////////////////////////////////////////////////
extern "C"
BOOL SDC_PreDeinit(DWORD hDeviceContext)
{
    DEBUGMSG(SDCARD_ZONE_INIT, (TEXT("SDBusDriver: +SDC_PreDeinit\n")));

    // Nothing to do here. Just make sure that the device manager won't
    // call Deinit until everyone is out of SDC_IOControl.

    DEBUGMSG(SDCARD_ZONE_INIT, (TEXT("SDBusDriver: -SDC_PreDeinit\n")));
    return TRUE;
}


///////////////////////////////////////////////////////////////////////////////
//  SDC_Deinit - the deinit entry point for the SD bus driver
//  Input:  hDeviceContext - the context returned from SDC_Init
//  Output: 
//  Notes:  always returns TRUE.  
///////////////////////////////////////////////////////////////////////////////
extern "C"
BOOL SDC_Deinit(DWORD hDeviceContext)
{
    DEBUGMSG(SDCARD_ZONE_INIT, (TEXT("SDBusDriver: +SDC_Deinit\n")));

    // shutdown the bus driver
    ShutDownBusDriverInstance(hDeviceContext);

    DEBUGMSG(SDCARD_ZONE_INIT, (TEXT("SDBusDriver: -SDC_Deinit\n")));
    return TRUE;
}

///////////////////////////////////////////////////////////////////////////////
//  SDC_Init - the init entry point for the bus driver
//  Input:  dwContext - the context for this init
//  Output:
//  Return:  returns a non-zero value (pointer to the bus driver instance)
//  Notes:  
///////////////////////////////////////////////////////////////////////////////
extern "C"
DWORD SDC_Init(DWORD dwContext)
{
    LPCTSTR         pszActiveKey = (LPCTSTR) dwContext;

    DEBUGMSG(SDCARD_ZONE_INIT, (TEXT("SDBusDriver: +SDC_Init\n")));

    if (s_pSDBusDriver != NULL) {
        DEBUGMSG(SDCARD_ZONE_ERROR,
            (TEXT("SDBusDriver: Bus Driver Already loaded, only one instance allowed \n")));
        return 0;   
    }

    // create the instance
    s_pSDBusDriver = new CSDBusDriver(pszActiveKey);

    if (s_pSDBusDriver == NULL) {
        DEBUGMSG(SDCARD_ZONE_ERROR, (TEXT("SDC_Init: Failed to create instance of the bus driver\n")));
        return 0;
    }

    SD_API_STATUS status = s_pSDBusDriver->Initialize();
    if (!SD_API_SUCCESS(status)) {
        DEBUGMSG(SDCARD_ZONE_ERROR, (TEXT("SDC_Init: Bus driver failed to initialize : status: 0x%08X  \n"), status));
        delete s_pSDBusDriver;
        return 0; 
    }

    DEBUGMSG(SDCARD_ZONE_INIT, (TEXT("SDBusDriver: Bus Driver instance created : 0x%08X ! -SDC_Init \n"), s_pSDBusDriver));

    // return pointer to bus driver object as a context
    return (DWORD)s_pSDBusDriver;
}

///////////////////////////////////////////////////////////////////////////////
//  SDGetSystemContext - get the system context
//  Input: 
//  Output:
//  Return: returns the system context, NULL if the system is not initialized
//  Notes:  
///////////////////////////////////////////////////////////////////////////////
PVOID SDGetSystemContext()
{
    if (s_pSDBusDriver != NULL) {
        if (s_pSDBusDriver->IsReady()) {
            // return the bus driver object as a context
            return (PVOID)s_pSDBusDriver;
        }
    }

    return NULL;
}

///////////////////////////////////////////////////////////////////////////////
//  SDC_IOControl - the I/O control entry point for the bus driver
//  Input:  hOpenContext - the context returned from SDC_Open
//          dwCode - the ioctl code
//          pBufIn - the input buffer from the user
//          dwLenIn - the length of the input buffer
//          pBufOut - the output buffer from the user
//          dwLenOut - the length of the output buffer
//          pdwActualOut - the size of the transfer
//  Output:
//  Return: TRUE if ioctl was successfully handled 
//  Notes:  
///////////////////////////////////////////////////////////////////////////////
extern "C"
BOOL SDC_IOControl(DWORD   hOpenContext,
                   DWORD   dwCode,
                   PBYTE   pBufIn,
                   DWORD   dwLenIn,
                   PBYTE   pBufOut,
                   DWORD   dwLenOut,
                   PDWORD  pdwActualOut)
{
    BOOL fRet = TRUE;
    CSDBusDriver *pBusDriver = s_pSDBusDriver;

    DEBUGMSG(SDCARD_ZONE_FUNC, (TEXT("SDBusDriver: +SDC_IOControl\n")));

    if (hOpenContext == (DWORD) &s_fBusAccessContext) {
        // Bus access
        fRet = pBusDriver->BusIOControl(dwCode, pBufIn, dwLenIn, pBufOut, 
            dwLenOut, pdwActualOut);
    }
    else {
        // Normal access
        DEBUGCHK(hOpenContext == (DWORD) pBusDriver);

        switch (dwCode) {
            case IOCTL_SD_BUS_DRIVER_GET_SLOT_COUNT:
                if (dwLenOut != sizeof(DWORD)) {
                    SetLastError(ERROR_INVALID_PARAMETER);
                    fRet = FALSE;
                } else{
                    *((DWORD *)pBufOut) = pBusDriver->GetSlotInfo(NULL, 0);
                    *pdwActualOut = sizeof(DWORD);
                }
                break;

            case IOCTL_SD_BUS_DRIVER_GET_SLOT_INFO:
                if (0 == pBusDriver->GetSlotInfo(pBufOut, dwLenOut)) {
                    SetLastError(ERROR_INVALID_PARAMETER);
                    fRet = FALSE;
                } else {
                    *pdwActualOut = dwLenOut;
                }

                break;

            case IOCTL_SD_BUS_DRIVER_GET_VERSION:
                if (dwLenOut != sizeof(DWORD)) {
                    SetLastError(ERROR_INVALID_PARAMETER);
                    fRet = FALSE;
                } else{
                    *((DWORD *)pBufOut) = MAKELONG(CE_MINOR_VER, CE_MAJOR_VER);
                    *pdwActualOut = sizeof(DWORD);
                }

                break;

            default:
                SetLastError(ERROR_INVALID_PARAMETER);
                fRet = FALSE;
        }
    }

    DEBUGMSG(SDCARD_ZONE_FUNC, (TEXT("SDBusDriver: -SDC_IOControl 0x%X\n"), fRet));
    return fRet;
}

///////////////////////////////////////////////////////////////////////////////
//  SDC_Open - the open entry point for the bus driver
//  Input:  hDeviceContext - the device context from SDC_Init
//          AccessCode - the desired access
//          ShareMode - the desired share mode
//  Output: 
//  Return: returns open context (in this case, just the context from SDC_Init)
//  Notes:  
///////////////////////////////////////////////////////////////////////////////
extern "C"
DWORD SDC_Open(DWORD    hDeviceContext,
               DWORD    AccessCode,
               DWORD    ShareMode)
{
    DWORD dwRet;

    DEBUGMSG(SDCARD_ZONE_FUNC, (TEXT("SDBusDriver: +-SDC_Open\n")));

    DEBUGCHK(hDeviceContext == (DWORD) s_pSDBusDriver);

    if (AccessCode & DEVACCESS_BUSNAMESPACE) {
        // This is a bus access
        dwRet = (DWORD) &s_fBusAccessContext;
    }
    else {
        // Standard access
        dwRet = hDeviceContext;
    }

    return dwRet;
}


// Fill in the host controller's function table.
extern "C"
SD_API_STATUS 
SDHCDGetHCFunctions(
                    PSDHOST_API_FUNCTIONS pFunctions
                    )
{    
    SD_API_STATUS status = SD_API_STATUS_INVALID_PARAMETER;

    DEBUGMSG(SDCARD_ZONE_INIT, (TEXT("SDHCDGetHCFunctions: +Init\n")));

    if ( pFunctions && (pFunctions->dwSize == sizeof(*pFunctions)) ) {
        pFunctions->pAllocateContext = &SDHCDAllocateContext__X;
        pFunctions->pDeleteContext = &SDHCDDeleteContext__X;
        pFunctions->pRegisterHostController = &SDHCDRegisterHostController__X;
        pFunctions->pDeregisterHostController = &SDHCDDeregisterHostController__X;
        pFunctions->pIndicateSlotStateChange = &SDHCDIndicateSlotStateChange__X;
        pFunctions->pIndicateBusRequestComplete = &SDHCDIndicateBusRequestComplete__X;
        pFunctions->pUnlockRequest = &SDHCDUnlockRequest__X;
        pFunctions->pGetAndLockCurrentRequest = &SDHCDGetAndLockCurrentRequest__X;
        pFunctions->pPowerUpDown = &SDHCDPowerUpDown__X;

        status = SD_API_STATUS_SUCCESS;
    }
    else {
        DEBUGMSG(SDCARD_ZONE_ERROR, (TEXT("SDHCDGetHCFunctions: Invalid parameter\n")));
    }

    DEBUGMSG(SDCARD_ZONE_INIT, (TEXT("SDHCDGetHCFunctions: -Init\n")));

    return status;
}

// DO NOT REMOVE --- END EXTERNALLY DEVELOPED SOURCE CODE ID --- DO NOT REMOVE

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品国产三级国产普通话99| 日韩写真欧美这视频| 欧美精品少妇一区二区三区| 久久久久久麻豆| 精品一区精品二区高清| 色天使色偷偷av一区二区| 国产日韩精品一区二区三区 | 国产精品视频一区二区三区不卡| 亚洲一区二区三区四区不卡 | 蜜臀av亚洲一区中文字幕| 色婷婷av一区二区三区软件 | 五月婷婷综合在线| 91片黄在线观看| 国产亚洲综合在线| 国精品**一区二区三区在线蜜桃| 欧美精品久久久久久久多人混战| 亚洲色图视频免费播放| 国产成人啪午夜精品网站男同| 欧美一级高清片在线观看| 丝袜亚洲另类欧美综合| 日本精品裸体写真集在线观看| 国产精品免费看片| 波多野结衣一区二区三区 | 欧美精品自拍偷拍| 香蕉av福利精品导航| 欧美性xxxxxx少妇| 一个色在线综合| 欧美日韩中文字幕一区二区| 亚洲一区二区三区四区中文字幕| 色噜噜久久综合| 亚洲永久精品大片| 欧美优质美女网站| 亚洲一区二区在线播放相泽| 欧美亚日韩国产aⅴ精品中极品| 亚洲黄色免费电影| 欧美日韩亚洲另类| 日韩电影在线观看一区| 日韩欧美国产精品一区| 国产在线乱码一区二区三区| 久久综合丝袜日本网| 成人午夜免费视频| 亚洲天堂久久久久久久| 91黄色激情网站| 性欧美大战久久久久久久久| 日韩一级免费一区| 国产成人在线看| 中文字幕制服丝袜一区二区三区| 丁香婷婷综合色啪| 一区二区三区美女| 欧美一区二区视频网站| 国产一区在线观看麻豆| 中日韩av电影| 欧美日韩国产不卡| 韩国精品在线观看| 亚洲美女屁股眼交| 91精品国产综合久久久蜜臀图片| 美日韩一区二区| 中文字幕av不卡| 欧洲一区在线观看| 韩国精品免费视频| 亚洲自拍偷拍图区| 久久免费美女视频| 欧美午夜精品一区二区三区| 国产麻豆视频一区| 亚洲国产美女搞黄色| 26uuu亚洲综合色| 欧洲av一区二区嗯嗯嗯啊| 精品在线观看免费| 亚洲在线中文字幕| 国产欧美一区二区在线| 欧美日韩dvd在线观看| 成人免费视频免费观看| 蜜桃久久av一区| 亚洲免费资源在线播放| 亚洲精品一区二区三区影院 | 亚洲一区视频在线观看视频| 日韩区在线观看| 色综合久久综合网欧美综合网| 久久99九九99精品| 亚洲第一电影网| 综合久久久久久久| 国产亚洲欧美激情| 欧美色倩网站大全免费| 99re这里只有精品首页| 久久国产视频网| 午夜精品福利一区二区三区av| 最近中文字幕一区二区三区| 精品国产凹凸成av人导航| 欧美乱妇23p| 欧美在线小视频| 97精品国产露脸对白| 国产精品 欧美精品| 日韩 欧美一区二区三区| 一区二区三区在线看| 日韩毛片视频在线看| 欧美经典一区二区| 久久久精品国产免大香伊| 日韩欧美中文字幕一区| 欧美日韩中文精品| 欧美亚洲综合另类| 在线看日本不卡| 色乱码一区二区三区88| 久久综合色之久久综合| 91精品国产丝袜白色高跟鞋| 欧美综合一区二区| 在线观看视频一区二区| 色婷婷av一区二区三区gif| www.99精品| 99精品久久只有精品| 成人午夜电影久久影院| 成人综合在线视频| 成人18精品视频| 色综合久久88色综合天天免费| 成人91在线观看| 91在线国内视频| 日本精品视频一区二区| 欧美在线一区二区| 9191成人精品久久| 日韩精品影音先锋| 国产亚洲一二三区| 国产精品麻豆99久久久久久| 亚洲视频免费在线观看| 亚洲另类在线视频| 亚洲va国产天堂va久久en| 亚洲444eee在线观看| 奇米精品一区二区三区四区| 国产在线不卡一区| 99这里都是精品| 欧美日韩一区高清| 欧美成人三级在线| 国产精品二三区| 亚洲成人777| 韩国av一区二区三区四区| 成人avav在线| 欧美亚洲一区二区在线| 日韩一区二区免费视频| 欧美国产精品v| 午夜精品久久久久久| 国产一区二区精品久久99| av男人天堂一区| 欧美疯狂性受xxxxx喷水图片| 日韩免费一区二区三区在线播放| 国产日韩精品一区二区浪潮av | 日本欧美一区二区三区| 国产馆精品极品| 在线观看亚洲a| 久久一区二区视频| 亚洲一区二区三区中文字幕在线| 免费在线一区观看| 一本到一区二区三区| 精品sm在线观看| 亚洲一区二区四区蜜桃| 国产成人在线电影| 欧美猛男gaygay网站| 国产欧美日韩一区二区三区在线观看| 成人免费视频在线观看| 日韩国产在线一| 成人app网站| 精品国产乱码久久久久久图片| 亚洲免费观看高清完整版在线| 久久电影网站中文字幕| 欧美日韩免费一区二区三区| 国产亚洲精品超碰| 蜜臀av亚洲一区中文字幕| 一本大道综合伊人精品热热| 日韩免费观看高清完整版| 夜夜亚洲天天久久| 成人av资源网站| 久久久久久久一区| 日韩精品一二区| 欧美亚洲愉拍一区二区| 国产精品素人视频| 国产在线精品免费| 制服丝袜在线91| 亚洲午夜精品在线| 色先锋aa成人| 国产精品亲子伦对白| 国产中文一区二区三区| 91精品国产91综合久久蜜臀| 亚洲精品少妇30p| 99久久婷婷国产综合精品电影| 日韩欧美激情在线| 日本成人超碰在线观看| 欧美欧美欧美欧美首页| 一区二区在线观看免费| 91日韩精品一区| 亚洲啪啪综合av一区二区三区| 国产一区二区女| 久久亚洲精精品中文字幕早川悠里| 日韩黄色在线观看| 91麻豆精品国产91久久久使用方法 | 亚洲男人的天堂在线观看| 成人的网站免费观看| 国产亚洲精品资源在线26u| 国产乱妇无码大片在线观看| 欧美成人高清电影在线| 免费欧美日韩国产三级电影| 日韩一区二区在线看| 卡一卡二国产精品| 精品美女在线观看|