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

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

?? sdhc.h

?? 6410BSP3
?? H
字號:
//
// 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.
//

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

#ifndef _SDHC_H_
#define _SDHC_H_

#include <windows.h>
#include <ceddk.h>
#include <devload.h>
#include <pm.h>
#include <ddkreg.h>
#include <creg.hxx>
#include <nkintr.h>
#include "SDCardDDK.h"
#include "SDHCD.h"
#include "SDHCRegs.h"
#include "SDHCSlot.h"

// Configuration information for a slot.
typedef struct SDHC_SLOT_INFO {
    volatile UCHAR *pucRegisters;
    DWORD           dwExtraInfo;
} *PSDHC_SLOT_INFO;


typedef class CSDHCBase *PCSDHCBase;

typedef PCSDHCBase (WINAPI *LPSDHC_CREATION_PROC) ();
typedef VOID (WINAPI *LPSDHC_DESTRUCTION_PROC) (PCSDHCBase);


// Base standard host controller class.
typedef class CSDHCBase {
public:
    // Constructor - only initializes the member data. True initialization
    // occurs in Init().
    CSDHCBase();
    virtual ~CSDHCBase();

    // Perform basic initialization including initializing the hardware
    // so that the capabilities register can be read.
    virtual BOOL Init(LPCTSTR pszActiveKey);

    // Second stage of hardware initialization. Start the IST and turn on
    // interrupts. Should be called from SDHCInitialize.
    virtual SD_API_STATUS Start();

    // Closes the IST and disables interrupts. Should be called from  
    // SDHCDeinitialize.
    virtual SD_API_STATUS Stop();

    // Called by SDHCCancelIoHandler.
    virtual BOOLEAN CancelIoHandler(DWORD dwSlot, PSD_BUS_REQUEST pRequest) {
        // We should never get here because all requests are non-cancelable.
        // The hardware supports timeouts so it is impossible for the 
        // controller to get stuck.
        DEBUGCHK(FALSE);

        return TRUE;
    }

    // Called by SDHCBusRequestHandler.
    virtual SD_API_STATUS BusRequestHandler(DWORD dwSlot, PSD_BUS_REQUEST pRequest) {
        Validate();

        // Acquire the device lock to protect from device removal
        Lock();
        SD_API_STATUS status = GetSlot(dwSlot)->BusRequestHandler(pRequest);
        Unlock();
        return status;
    }

    // Called by SDHCSlotOptionHandler.
    virtual SD_API_STATUS SlotOptionHandler(DWORD dwSlot, 
        SD_SLOT_OPTION_CODE sdOption, PVOID pData, DWORD cbData);

    // Called by SHC_IOControl. Does nothing by default.
    virtual DWORD IOControl(DWORD dwCode, PBYTE pBufIn, DWORD dwLenIn, 
        PBYTE pBufOut, DWORD dwLenOut, PDWORD pdwActualOut) 
    { 
        return ERROR_INVALID_PARAMETER;
    }

    // Called by SHC_PowerDown.
    virtual VOID PowerDown();

    // Called by SHC_PowerUp.
    virtual VOID PowerUp();

    // Called by SHC_PreDeinit in order to release threads before destroying
    // our objects. Calls SDHCDDeregisterHostController if necessary.
    virtual VOID PreDeinit(); 

    // Called by SHC_Deinit to get the destructor function.
    virtual LPSDHC_DESTRUCTION_PROC GetDestructionProc() = 0;

    // Prototypes for bus callbacks
    static BOOLEAN SDHCCancelIoHandler(PSDCARD_HC_CONTEXT pHCContext,
        DWORD dwSlot, PSD_BUS_REQUEST pRequest);
    static SD_API_STATUS SDHCBusRequestHandler(PSDCARD_HC_CONTEXT pHCContext,
        DWORD dwSlot, PSD_BUS_REQUEST pRequest);
    static SD_API_STATUS SDHCSlotOptionHandler(PSDCARD_HC_CONTEXT pHCContext, 
        DWORD dwSlot, SD_SLOT_OPTION_CODE Option, PVOID pData, 
        ULONG OptionSize);
    static SD_API_STATUS SDHCDeinitialize(PSDCARD_HC_CONTEXT pHCContext);
    static SD_API_STATUS SDHCInitialize(PSDCARD_HC_CONTEXT pHCContext);

    // Called by SHC_Init to create the proper subclass object.f
    static PCSDHCBase CreateSDHCControllerObject(LPCTSTR pszActiveKey);

protected:
    // Allocate the slot objects. Override this method to use a slot
    // subclass.
    virtual PCSDHCSlotBase AllocateSlotObjects(DWORD cSlots) {
        PREFAST_ASSERT(CheckSlotCount(cSlots));
        return new CSDHCSlotBase[cSlots];
    }

    // Get the physical device information from the registry and
    // initialize the host controller hardware. Called by Init().
    virtual BOOL InitializeHardware();

    // Deinitialize all resources from InitializeHardware(). Called
    // by ~CSDHCBase().
    virtual BOOL DeinitializeHardware();


    // Static stub that calls IST().
    static DWORD WINAPI ISTStub(LPVOID lpParameter) {
        PCSDHCBase pController = (PCSDHCBase) lpParameter;
        return pController->IST();
    }


    // The controller's interrupt routine. Terminates when 
    // m_fDriverShutdown becomes TRUE.
    virtual DWORD IST(); 

    // Interrupt handler for every slot on the controller.
    // Calls HandleInterrupt() for each slot
    // that needs servicing.
    virtual VOID HandleInterrupt();

    // Determine the number of slots on this controller.
    // Returns 0 if there was a problem.
    virtual DWORD DetermineSlotCount();

    // Return the index of the slot zero's window.
    virtual DWORD DetermineFirstSlotWindow(PDDKWINDOWINFO pwini);

    // Look at all the slots to see which power state is needed
    // at the controller level.
    virtual CEDEVICE_POWER_STATE DetermineRequiredControllerPowerState();

    // Set the power state for the entire controller.
    virtual SD_API_STATUS SetControllerPowerState(CEDEVICE_POWER_STATE cpsNew);

    // Get the pointer to the slot.
    virtual PCSDHCSlotBase GetSlot(DWORD dwSlot) { 
        PREFAST_DEBUGCHK(m_pSlots);
        DEBUGCHK(dwSlot < m_cSlots);
        return &m_pSlots[dwSlot];
    }

    // Take and release the host controller critical section.
    virtual VOID Lock()   { SDHCDAcquireHCLock(m_pHCDContext); }
    virtual VOID Unlock() { SDHCDReleaseHCLock(m_pHCDContext); }

    // Return TRUE if the give slot count is acceptable.
    static inline BOOL CheckSlotCount(DWORD dwSlots) {
        return (dwSlots != 0) && (dwSlots <= SDHC_MAX_SLOTS);
    }


#ifdef DEBUG
    static const LPCTSTR sc_rgpszOptions[SDHCDSlotOptionCount];

    // Validate the member data.
    virtual VOID Validate();

    // Validate the slot count.
    virtual VOID ValidateSlotCount() {
        DEBUGCHK(CheckSlotCount(m_cSlots));
    }
#else
    // These routines do nothing in non-debug builds.
    inline VOID Validate() {}
    inline VOID ValidateSlotCount() {}
#endif


    CReg                    m_regDevice;                    // device key
    HANDLE                  m_hBusAccess;                   // bus parent
    DWORD                   m_cSlots;                       // number of slots on controller
    PCSDHCSlotBase          m_pSlots;                       // dynamic array of slot objects    
    PSDHC_SLOT_INFO         m_pSlotInfos;                   // dynamic arry of info on each slot

    PSDCARD_HC_CONTEXT      m_pHCDContext;                  // the host controller context
    INTERFACE_TYPE          m_interfaceType;                // interface of the controller
    DWORD                   m_dwBusNumber;                  // bus number of the controller

    HANDLE                  m_hISRHandler;                  // handle to the ISR
    DWORD                   m_dwSysIntr;                    // system interrupt

    DWORD                   m_dwPriority;                   // IST priority
    HANDLE                  m_hevInterrupt;                 // controller interrupt event
    HANDLE                  m_htIST;                        // controller interrupt thread

    CEDEVICE_POWER_STATE    m_cpsCurrent;                   // current power state
    BOOL                    m_fDriverShutdown;              // driver is terminating

    BOOL                    m_fHardwareInitialized : 1;     // InitializeHardware() succeeded 
    BOOL                    m_fRegisteredWithBusDriver : 1; // SDHCDRegisterHostController() succeeded
    BOOL                    m_fInterruptInitialized : 1;    // InterruptInitialize() succeeded
}*PCSDHCBase;


// Called by SHC_Init to create the instance of CSDHCBase. Define to
// create your subclass.
extern "C" PCSDHCBase CreateSDHCControllerObject();

// Called by SHC_Deinit to free the instance of CSDHCBase. Define to
// free your subclass.
extern "C" VOID DestroySDHCControllerObject(PCSDHCBase pSDHC);



#define SDHC_INTERRUPT_ZONE    SDCARD_ZONE_0
#define SDHC_SEND_ZONE         SDCARD_ZONE_1
#define SDHC_RESPONSE_ZONE     SDCARD_ZONE_2
#define SDHC_RECEIVE_ZONE      SDCARD_ZONE_3
#define SDHC_CLOCK_ZONE        SDCARD_ZONE_4
#define SDHC_TRANSMIT_ZONE     SDCARD_ZONE_5

#define SDHC_INTERRUPT_ZONE_ON ZONE_ENABLE_0
#define SDHC_SEND_ZONE_ON      ZONE_ENABLE_1
#define SDHC_RESPONSE_ZONE_ON  ZONE_ENABLE_2
#define SDHC_RECEIVE_ZONE_ON   ZONE_ENABLE_3
#define SDHC_CLOCK_ZONE_ON     ZONE_ENABLE_4
#define SDHC_TRANSMIT_ZONE_ON  ZONE_ENABLE_5

#define SDHC_CARD_CONTROLLER_PRIORITY   100
#define SDHC_PRIORITY_KEY               _T("Priority256")
#define SDHC_CREATION_PROC_KEY          _T("ObjectCreationProc")

#define INVALID_BUS_NUMBER              0xFFFFFFFF


#define GET_PCONTROLLER_FROM_HCD(pHCDContext) \
    GetExtensionFromHCDContext(PCSDHCBase, pHCDContext)


#endif // _SDHC_H_

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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品国产高清久久伦理二区| 不卡高清视频专区| 不卡一二三区首页| 日韩女优毛片在线| 亚洲一区二区三区四区在线免费观看 | 国产乱码一区二区三区| 欧美中文字幕一区二区三区亚洲| 久久久久久免费毛片精品| 亚洲自拍偷拍网站| 91在线码无精品| 中文字幕第一区综合| 免费xxxx性欧美18vr| 欧美日韩一区成人| 一区二区三区精品视频| 97成人超碰视| 日本一区二区三区高清不卡| 久久爱www久久做| 91精品国产综合久久香蕉的特点 | 日韩成人午夜电影| 欧美性做爰猛烈叫床潮| 亚洲人成精品久久久久久 | 经典三级在线一区| 91精品国产91久久久久久一区二区 | 国产精品女人毛片| 国产精品一卡二卡在线观看| 日韩一区二区精品| 日产国产高清一区二区三区 | 91久久国产综合久久| 最新不卡av在线| www.爱久久.com| 中文字幕乱码亚洲精品一区 | 国内精品伊人久久久久av影院| 在线成人av影院| 亚洲福利电影网| 777色狠狠一区二区三区| 日韩不卡手机在线v区| 欧美一区二区三区视频在线 | 色婷婷久久一区二区三区麻豆| 国产精品久久久久久久第一福利 | 欧美一区二区视频在线观看 | 一道本成人在线| 亚洲国产乱码最新视频| 69堂国产成人免费视频| 裸体健美xxxx欧美裸体表演| 精品国产免费人成电影在线观看四季 | 久久精品人人做人人综合 | 欧美丝袜丝交足nylons图片| 亚洲成人777| 日韩亚洲欧美综合| 国产精品一区二区果冻传媒| 综合久久久久久| 欧美少妇一区二区| 久久精品av麻豆的观看方式| 久久精品免费在线观看| 91丨porny丨蝌蚪视频| 亚洲一区二区av在线| 日韩一区二区三区在线| 国产精品1区2区3区在线观看| 综合色天天鬼久久鬼色| 在线成人午夜影院| 国产成人精品免费一区二区| 亚洲免费观看在线视频| 欧美一区二区视频在线观看2022| 国产一区二区三区久久悠悠色av| 亚洲欧美日韩人成在线播放| 91精品国产综合久久蜜臀| 国产99久久久精品| 调教+趴+乳夹+国产+精品| 久久久无码精品亚洲日韩按摩| 91蜜桃在线免费视频| 日韩av电影一区| 亚洲天堂成人网| 精品国产一区二区亚洲人成毛片| 色琪琪一区二区三区亚洲区| 久久精品国产成人一区二区三区 | 欧美国产激情一区二区三区蜜月| 欧美日韩一区二区欧美激情 | 日本在线不卡视频| 中文字幕一区日韩精品欧美| 日韩一区二区在线看片| 91麻豆.com| 粉嫩13p一区二区三区| 蜜臀av性久久久久蜜臀aⅴ| 综合色中文字幕| 久久午夜免费电影| 欧美高清精品3d| 色偷偷成人一区二区三区91| 国产成人精品亚洲日本在线桃色| 日韩国产欧美视频| 日韩伦理av电影| 国产香蕉久久精品综合网| 在线电影国产精品| 在线精品视频一区二区三四| 成人黄色777网| 精品制服美女丁香| 奇米四色…亚洲| 日韩精品五月天| 亚洲女同ⅹxx女同tv| 欧美国产97人人爽人人喊| 日韩欧美国产一二三区| 在线不卡a资源高清| 色婷婷综合五月| 91丝袜美女网| 91亚洲永久精品| 成人免费黄色大片| 成人伦理片在线| 成人午夜电影小说| 国产成人免费视频网站| 国产一区二区精品久久91| 国内精品伊人久久久久av一坑| 麻豆国产欧美一区二区三区| 奇米精品一区二区三区四区| 日本少妇一区二区| 蜜臀av一区二区三区| 麻豆成人久久精品二区三区小说| 热久久免费视频| 免费成人美女在线观看.| 蜜桃av噜噜一区| 久久国产乱子精品免费女| 免费成人在线观看视频| 久久精品国产亚洲aⅴ| 久久91精品国产91久久小草| 精品一区二区在线免费观看| 国产美女主播视频一区| 成人午夜大片免费观看| 91麻豆视频网站| 欧亚洲嫩模精品一区三区| 欧美偷拍一区二区| 欧美一区二区成人| 久久久久久黄色| ...av二区三区久久精品| 亚洲激情五月婷婷| 日韩av午夜在线观看| 久久99热这里只有精品| 丁香啪啪综合成人亚洲小说 | 成人一区二区三区视频在线观看| 成人精品小蝌蚪| 欧美丝袜自拍制服另类| 日韩免费视频线观看| 欧美激情一区二区三区| 亚洲国产精品久久人人爱蜜臀| 青青青爽久久午夜综合久久午夜 | 美女一区二区久久| 东方aⅴ免费观看久久av| 欧美在线免费视屏| 久久婷婷久久一区二区三区| 亚洲天堂福利av| 美女一区二区在线观看| 99re6这里只有精品视频在线观看| 欧美私人免费视频| 久久久久久日产精品| 亚洲一区二区三区在线播放| 麻豆国产精品777777在线| 成人免费电影视频| 欧美一区二区三区思思人| 国产精品私人影院| 日韩在线一区二区| 91在线看国产| 精品免费99久久| 一区二区高清免费观看影视大全| 日韩有码一区二区三区| 成人爱爱电影网址| 欧美一区二区黄| 亚洲欧美日韩国产手机在线 | 亚洲国产精品高清| 蜜桃一区二区三区在线观看| 91麻豆福利精品推荐| 亚洲精品在线免费播放| 亚洲美女电影在线| 国产91精品入口| 日韩精品一区二区三区四区视频| 亚洲精品网站在线观看| 国产精品一卡二卡| 日韩一级二级三级| 午夜精品123| 91麻豆免费观看| 国产精品丝袜久久久久久app| 免费美女久久99| 欧美精三区欧美精三区| 亚洲综合免费观看高清完整版在线 | 色狠狠综合天天综合综合| 国产亚洲精品bt天堂精选| 美日韩黄色大片| 欧美另类高清zo欧美| 亚洲日本在线视频观看| 福利电影一区二区| 欧美精品一区二区三区在线播放| 天天色综合成人网| 欧美日韩国产大片| 亚洲宅男天堂在线观看无病毒| 成人黄色在线网站| 欧美激情中文字幕一区二区| 国产麻豆精品95视频| 欧美不卡一二三| 久久精品国产亚洲aⅴ| 精品美女在线观看| 国产一区二区美女| 国产欧美一区二区三区在线看蜜臀| 国模冰冰炮一区二区| 久久蜜桃香蕉精品一区二区三区|