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

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

?? sdclient.cpp

?? 6410BSP3
?? CPP
字號:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this sample source code is subject to the terms of the Microsoft
// license agreement under which you licensed this sample source code. If
// you did not accept the terms of the license agreement, you are not
// authorized to use this sample source code. For the terms of the license,
// please see the license agreement between you and Microsoft or, if applicable,
// see the LICENSE.RTF on your install media or the root of your tools installation.
// THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES OR INDEMNITIES.
//
//
/*++
THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
PARTICULAR PURPOSE.

Module Name:  
    SDClient.cpp
Abstract:
    SDBus Client Driver Interface Implementation.

Notes: 
--*/
#include <windows.h>
#include <bldver.h>
#include <cesdbus.h>
#include <marshal.hpp>

#include "../HSMMCCh1/s3c6410_hsmmc_lib/sdhcd.h"

#include "sdbus.hpp"


///////////////////////////////////////////////////////////////////////////////
//  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")));
    DWORD dwRet = (DWORD) CSDHostContainer::DriverInit((LPCTSTR) dwContext);
    DEBUGMSG(SDCARD_ZONE_INIT, (TEXT("SDBusDriver: Bus Driver instance created : 0x%08X ! -SDC_Init \n"), dwRet));

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

///////////////////////////////////////////////////////////////////////////////
//  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")));
    CSDHostContainer::DriverDeInit((PVOID)hDeviceContext);
    DEBUGMSG(SDCARD_ZONE_INIT, (TEXT("SDBusDriver: -SDC_Deinit\n")));
    return TRUE;
}

static DWORD dwBusAccess = 1;
static DWORD dwDeviceAccess = 0;

///////////////////////////////////////////////////////////////////////////////
//  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"
HANDLE SDC_Open(HANDLE    hDeviceContext,
               DWORD    AccessCode,
               DWORD    ShareMode)
{
    HANDLE hRet = NULL ;

    DEBUGMSG(SDCARD_ZONE_FUNC, (TEXT("SDBusDriver: +-SDC_Open\n")));
    
    if (CSDHostContainer::GetHostContainer ()) {
        if (AccessCode & DEVACCESS_BUSNAMESPACE) {
            // This is a bus access
            hRet = (HANDLE)&dwBusAccess;
        }
        else {
            // Standard access
            hRet = (HANDLE)&dwDeviceAccess;
        }
    }

    return hRet;
}
///////////////////////////////////////////////////////////////////////////////
//  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_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(HANDLE   hOpenContext,
                   DWORD   dwCode,
                   PBYTE   pBufIn,
                   DWORD   dwLenIn,
                   PBYTE   pBufOut,
                   DWORD   dwLenOut,
                   PDWORD  pdwActualOut)
{

    DEBUGMSG(SDCARD_ZONE_FUNC, (TEXT("SDBusDriver: +SDC_IOControl\n")));
    BOOL fRet = FALSE;
    if (CSDHostContainer::GetHostContainer()!=NULL && hOpenContext!=NULL) {        
        if ((*(PDWORD)hOpenContext)!= 0 ) {
            fRet = CSDHostContainer::GetHostContainer()->IOControl(dwCode, pBufIn, dwLenIn, pBufOut, dwLenOut, pdwActualOut);
        }
        else {
            fRet = CSDHostContainer::GetHostContainer()->SDC_IOControl(dwCode, pBufIn, dwLenIn, pBufOut, dwLenOut, pdwActualOut);
        }
            
    } 
    else {
        SetLastError(ERROR_INVALID_PARAMETER);
        fRet = FALSE;
    }
    ASSERT(fRet);
    return (fRet);
}
    


// 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 = &CSDHostContainer::SDHCDAllocateContext__X;
        pFunctions->pDeleteContext = &CSDHostContainer::SDHCDDeleteContext__X;
        pFunctions->pRegisterHostController = &CSDHostContainer::SDHCDRegisterHostController__X;
        pFunctions->pDeregisterHostController = &CSDHostContainer::SDHCDDeregisterHostController__X;
        pFunctions->pIndicateSlotStateChange = &CSDHostContainer::SDHCDIndicateSlotStateChange__X;
        pFunctions->pIndicateBusRequestComplete = &CSDHostContainer::SDHCDIndicateBusRequestComplete__X;
        pFunctions->pUnlockRequest = &CSDHostContainer::SDHCDUnlockRequest__X;
        pFunctions->pGetAndLockCurrentRequest = &CSDHostContainer::SDHCDGetAndLockCurrentRequest__X;
        pFunctions->pPowerUpDown = &CSDHostContainer::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;
}

///////////////////////////////////////////////////////////////////////////////
//  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 ) {
        DEBUGMSG(SDCARD_ZONE_INIT, (TEXT("SDBusDriver: PROCESS_ATTACH \n")));
        DisableThreadLibraryCalls((HMODULE) hInstance);
        SD_DEBUG_ZONE_REGISTER(hInstance, NULL);
    }
    else if ( Reason == DLL_PROCESS_DETACH ) {
        DEBUGMSG(SDCARD_ZONE_INIT, (TEXT("SDBusDriver: PROCESS_DETACH \n")));
    }

    return fRet;
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
777午夜精品免费视频| 91丨porny丨户外露出| 亚洲成人一二三| 亚洲女人小视频在线观看| 日本一区二区在线不卡| 国产精品全国免费观看高清 | jlzzjlzz亚洲日本少妇| 国产成人免费9x9x人网站视频| 九九热在线视频观看这里只有精品| 日韩电影在线一区| 久久草av在线| 国产成a人亚洲| 99久久国产综合色|国产精品| 色综合天天综合网天天看片| 色哟哟亚洲精品| 欧美日韩1区2区| 日韩精品一区二区三区在线观看 | 免费成人在线播放| 国产乱码精品1区2区3区| 成人久久视频在线观看| 91在线视频免费91| 91精品国产综合久久香蕉麻豆| 精品理论电影在线观看| 中文字幕巨乱亚洲| 午夜视频久久久久久| 国产一区二区女| 色视频一区二区| 亚洲精品在线一区二区| 亚洲日本在线a| 日本91福利区| 99re热这里只有精品视频| 欧美日韩午夜影院| 久久久久久**毛片大全| 亚洲国产精品精华液网站| 国产精品正在播放| 欧美日韩国产一级片| 国产精品三级av在线播放| 亚洲成年人影院| 国产成人午夜视频| 91麻豆精品国产自产在线观看一区 | 亚洲国产成人va在线观看天堂| 麻豆国产精品777777在线| 成人av电影在线| 欧美一区二区三区小说| 亚洲人成伊人成综合网小说| 狠狠色狠狠色综合系列| 欧美午夜不卡视频| 中文字幕一区二区三| 久久av中文字幕片| 欧美精品视频www在线观看| 国产精品女主播在线观看| 日韩av电影天堂| 欧美日韩亚洲综合一区二区三区| 国产亚洲精品7777| 久久99精品久久久久久久久久久久| 色婷婷av一区二区三区软件| 国产欧美日韩视频在线观看| 日韩不卡一二三区| 欧美无人高清视频在线观看| 亚洲精品中文在线影院| www.性欧美| 国产欧美一区二区精品性色 | 国产自产2019最新不卡| 欧美精品自拍偷拍动漫精品| 亚洲欧美日韩国产另类专区 | 欧美一区二区私人影院日本| 午夜精品一区二区三区免费视频| 91在线小视频| 一区二区三区欧美| 色噜噜久久综合| 亚洲视频免费在线观看| aaa亚洲精品一二三区| 国产精品私房写真福利视频| 成人av一区二区三区| 欧美国产欧美综合| 丁香天五香天堂综合| 国产性做久久久久久| 国产在线精品国自产拍免费| 久久久久久久久久久久久女国产乱| 美腿丝袜一区二区三区| 精品少妇一区二区三区免费观看 | 91国在线观看| 亚洲电影中文字幕在线观看| 欧美日韩精品一区二区三区| 无吗不卡中文字幕| 欧美一级专区免费大片| 国产在线乱码一区二区三区| 久久久国产一区二区三区四区小说| 国产白丝网站精品污在线入口| 国产精品每日更新| 欧日韩精品视频| 免费一区二区视频| 欧美极品aⅴ影院| 色婷婷综合在线| 美女诱惑一区二区| 国产精品国产三级国产aⅴ原创| 在线免费观看不卡av| 日韩不卡一二三区| 国产精品卡一卡二卡三| 欧美精品日韩一本| 高清成人在线观看| 亚洲成a天堂v人片| 久久精品综合网| 欧美系列一区二区| 国产电影精品久久禁18| 亚洲三级电影全部在线观看高清| 欧美综合欧美视频| 久久精品国产第一区二区三区| 久久婷婷一区二区三区| 色综合天天在线| 日韩经典一区二区| 久久综合九色综合久久久精品综合| 国产一区二区三区最好精华液| 欧美一级艳片视频免费观看| 成人一级视频在线观看| 亚洲国产综合色| 日韩视频123| 不卡的av在线播放| 天天免费综合色| 国产精品沙发午睡系列990531| 欧美网站一区二区| 国产麻豆精品theporn| 亚洲欧美日韩成人高清在线一区| 欧美日韩aaaaaa| 91官网在线免费观看| 奇米777欧美一区二区| 国产精品理论片在线观看| 欧美午夜电影网| 成人午夜视频福利| 久久国内精品自在自线400部| 国产精品高潮呻吟久久| 91精品久久久久久久91蜜桃| jlzzjlzz亚洲日本少妇| 蜜桃精品视频在线观看| 精品日韩欧美在线| 99久久精品国产麻豆演员表| 亚洲精品乱码久久久久久| 91国偷自产一区二区开放时间 | 亚洲国产日韩综合久久精品| 亚洲色图一区二区三区| 亚洲欧美电影一区二区| 亚洲高清免费观看高清完整版在线观看| 肉丝袜脚交视频一区二区| 性做久久久久久| 另类欧美日韩国产在线| 国内精品视频666| 丰满岳乱妇一区二区三区| 91国模大尺度私拍在线视频| 欧美日本高清视频在线观看| 欧美一区二区三区色| 久久嫩草精品久久久久| 国产精品不卡在线| 自拍偷拍国产亚洲| 午夜国产精品影院在线观看| 毛片一区二区三区| 成人国产精品免费观看| 日韩欧美一卡二卡| 欧美激情一区二区在线| 亚洲中国最大av网站| 久久精品国产澳门| 欧美性猛交xxxx乱大交退制版| 日韩免费一区二区三区在线播放| 国产亚洲综合性久久久影院| 一区二区三区毛片| 国内久久精品视频| 99精品欧美一区二区蜜桃免费 | 亚洲成av人在线观看| 国产精品综合视频| 91福利视频在线| 欧美精品一区二区三区高清aⅴ| 国产欧美精品一区二区色综合 | 日韩久久免费av| 亚洲同性同志一二三专区| 韩国成人在线视频| 欧美性一二三区| 久久久久99精品国产片| 日韩专区一卡二卡| 成人性生交大片免费看视频在线 | 亚洲精品成人在线| 国产一区二区美女| 欧美又粗又大又爽| 久久久久久97三级| 激情综合色综合久久| 在线视频国产一区| 中文字幕av不卡| 久久99精品国产麻豆婷婷| 色呦呦国产精品| 亚洲免费av在线| 成人免费va视频| 日韩精品资源二区在线| 亚洲国产一区在线观看| 色视频成人在线观看免| 国产精品久久久久精k8| 精品一区二区三区视频 | 午夜欧美视频在线观看| 白白色 亚洲乱淫| 国产女主播在线一区二区| 成人手机在线视频| 久久久亚洲欧洲日产国码αv| 亚洲一区二区五区|