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

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

?? sdmemmain.cpp

?? 6410BSP3
?? CPP
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
//
// 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

// Driver entry points for SD Memory Card client driver

#include <windows.h>
#include "SDMemory.h"
#include <ceddk.h>

    // initialize debug zones
SD_DEBUG_INSTANTIATE_ZONES(
     TEXT("SDMemory"), // module name
     ZONE_ENABLE_INIT | ZONE_ENABLE_ERROR | ZONE_ENABLE_WARN,   // initial settings
     TEXT("Disk I/O"),
     TEXT("Card I/O"),
     TEXT("Bus Requests"),
     TEXT("Power"),
     TEXT(""),
     TEXT(""),
     TEXT(""),
     TEXT(""),
     TEXT(""),
     TEXT(""),
     TEXT(""));

DWORD SetDiskInfo( PSD_MEMCARD_INFO, PDISK_INFO );
DWORD GetDiskInfo( PSD_MEMCARD_INFO, PDISK_INFO );
DWORD GetStorageID( PSD_MEMCARD_INFO, PSTORAGE_IDENTIFICATION, DWORD, DWORD* );
BOOL GetDeviceInfo(PSD_MEMCARD_INFO pMemCard, PSTORAGEDEVICEINFO pStorageInfo);

#define DEFAULT_MEMORY_TAGS 4

///////////////////////////////////////////////////////////////////////////////
//  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 WINAPI DllEntry(HINSTANCE hInstance, ULONG Reason, LPVOID pReserved)
{
    BOOL fRet = TRUE;

    if ( Reason == DLL_PROCESS_ATTACH ) {
        DisableThreadLibraryCalls((HMODULE) hInstance);
        if (!SDInitializeCardLib()) {
            fRet = FALSE;
        }
    }
    else if ( Reason == DLL_PROCESS_DETACH ) {
        SDDeinitializeCardLib();
    }

    return fRet;
}

///////////////////////////////////////////////////////////////////////////////
//  SMC_Close - the close entry point for the memory driver
//  Input:  hOpenContext - the context returned from SMC_Open
//  Output:
//  Return: always returns TRUE
//  Notes:
///////////////////////////////////////////////////////////////////////////////
extern "C" BOOL WINAPI SMC_Close(DWORD hOpenContext)
{
    DEBUGMSG(SDCARD_ZONE_FUNC, (TEXT("SDMemory: +-SMC_Close\n")));
    return TRUE;
}

///////////////////////////////////////////////////////////////////////////////
//  CleanUpDevice - cleanup the device instance
//  Input:  pDevice - device instance
//  Output:
//  Return:
//  Notes:
///////////////////////////////////////////////////////////////////////////////
VOID CleanUpDevice(PSD_MEMCARD_INFO pDevice)
{
    DeinitializePowerManagement(pDevice);

    // acquire removal lock
    AcquireRemovalLock(pDevice);

    if (NULL != pDevice->pRegPath) {
        // free the reg path
        SDFreeMemory(pDevice->pRegPath);
    }

    if (NULL != pDevice->hBufferList) {
        // delete the buffer memory list
        SDDeleteMemList(pDevice->hBufferList);
    }

    ReleaseRemovalLock(pDevice);

    DeleteCriticalSection(&pDevice->RemovalLock);
    DeleteCriticalSection(&pDevice->CriticalSection);

    // free the sterile I/O request
    if (NULL != pDevice->pSterileIoRequest) {
        LocalFree(pDevice->pSterileIoRequest);
        pDevice->pSterileIoRequest = NULL;
    }

    // free the device memory
    SDFreeMemory(pDevice);
}

///////////////////////////////////////////////////////////////////////////////
//  SMC_Deinit - the deinit entry point for the memory driver
//  Input:  hDeviceContext - the context returned from SMC_Init
//  Output:
//  Return: always returns TRUE
//  Notes:
///////////////////////////////////////////////////////////////////////////////
extern "C" BOOL WINAPI SMC_Deinit(DWORD hDeviceContext)
{
    PSD_MEMCARD_INFO pDevice;

    DEBUGMSG(SDCARD_ZONE_INIT, (TEXT("SDMemory: +SMC_Deinit\n")));

    pDevice = (PSD_MEMCARD_INFO)hDeviceContext;

        // now it is safe to clean up
    CleanUpDevice(pDevice);

    DEBUGMSG(SDCARD_ZONE_INIT, (TEXT("SDMemory: -SMC_Deinit\n")));

    return TRUE;
}

///////////////////////////////////////////////////////////////////////////////
//  SlotEventCallBack - slot event callback for fast-path events
//  Input:  hDevice - device handle
//          pContext - device specific context that was registered
//          SlotEventType - slot event type
//          pData - Slot event data (can be NULL)
//          DataLength - length of slot event data (can be 0)
//  Output:
//  Return:
//  Notes:
//
//      If this callback is registered the client driver can be notified of
//      slot events (such as device removal) using a fast path mechanism.  This
//      is useful if a driver must be notified of device removal
//      before its XXX_Deinit is called.
//
//      This callback can be called at a high thread priority and should only
//      set flags or set events.  This callback must not perform any
//      bus requests or call any apis that can perform bus requests.
///////////////////////////////////////////////////////////////////////////////
VOID SlotEventCallBack(SD_DEVICE_HANDLE    hDevice,
                       PVOID               pContext,
                       SD_SLOT_EVENT_TYPE  SlotEventType,
                       PVOID               pData,
                       DWORD               DataLength)
{
    PSD_MEMCARD_INFO pDevice;

    DEBUGMSG(SDCARD_ZONE_INIT, (TEXT("SDMemory: +SlotEventCallBack - %d \n"),SlotEventType));

    switch (SlotEventType) {
        case SDCardEjected :
            pDevice = (PSD_MEMCARD_INFO)pContext;
                // mark that the card is being ejected
            pDevice->CardEjected = TRUE;
                // acquire the removal lock to block this callback
                // in case an ioctl is in progress
            AcquireRemovalLock(pDevice);
            ReleaseRemovalLock(pDevice);

            break;

    }

    DEBUGMSG(SDCARD_ZONE_INIT, (TEXT("SDMemory: -SlotEventCallBack \n")));
}

///////////////////////////////////////////////////////////////////////////////
//  SMC_Init - the init entry point for the memory driver
//  Input:  dwContext - the context for this init
//  Output:
//  Return: non-zero context
//  Notes:
///////////////////////////////////////////////////////////////////////////////
extern "C" DWORD WINAPI SMC_Init(DWORD dwContext)
{
  SD_DEVICE_HANDLE                hClientHandle;  // client handle
  PSD_MEMCARD_INFO                pDevice;        // this instance of the device
  SDCARD_CLIENT_REGISTRATION_INFO ClientInfo;     // client into
  ULONG                           BufferSize;     // size of buffer
  HKEY                            hSubKey;        // registry key
  SD_API_STATUS                   Status;         // intermediate status
  DWORD                           data;           // registry data
  DWORD                           dataLength;     // registry data length

  DEBUGMSG(SDCARD_ZONE_INIT, (TEXT("SDMemory: +SMC_Init\r\n")));

  pDevice = (PSD_MEMCARD_INFO)SDAllocateMemoryWithTag(
      sizeof(SD_MEMCARD_INFO),
      SD_MEMORY_TAG);
  if (pDevice == NULL) {
    DEBUGMSG(SDCARD_ZONE_ERROR, (TEXT("SDMemory: Failed to allocate device info\r\n")));
    DEBUGMSG(SDCARD_ZONE_INIT, (TEXT("SDMemory: -SMC_Init\r\n")));
    return 0;
  }

  // initialize sterile I/O request to NULL
  pDevice->pSterileIoRequest = NULL;

  InitializeCriticalSection(&pDevice->CriticalSection);
  InitializeCriticalSection(&pDevice->RemovalLock);

  // get the device handle from the bus driver
  hClientHandle = SDGetDeviceHandle(dwContext, &pDevice->pRegPath);
  // store device handle in local context
  pDevice->hDevice = hClientHandle;
  if (NULL == hClientHandle) {
    DEBUGMSG(SDCARD_ZONE_ERROR, (TEXT("SDMemory: Failed to get client handle\r\n")));
    CleanUpDevice(pDevice);
    DEBUGMSG(SDCARD_ZONE_INIT, (TEXT("SDMemory: -SMC_Init\r\n")));
    return 0;
  }

  // allocate sterile I/O request
  pDevice->pSterileIoRequest = (PSG_REQ)LocalAlloc(
      LPTR,
      (sizeof(SG_REQ) + ((MAX_SG_BUF - 1) * sizeof(SG_BUF)))
      );
  if (NULL == pDevice->pSterileIoRequest) {
    DEBUGMSG(SDCARD_ZONE_ERROR, (TEXT("SDMemory: Failed to allocate sterile I/O request\r\n")));
    CleanUpDevice(pDevice);
    DEBUGMSG(SDCARD_ZONE_INIT, (TEXT("SDMemory: -SMC_Init\r\n")));
    return 0;
  }

  // register our debug zones
  SDRegisterDebugZones(hClientHandle, pDevice->pRegPath);

  memset(&ClientInfo, 0, sizeof(ClientInfo));

  // set client options and register as a client device
  _tcscpy(ClientInfo.ClientName, TEXT("Memory Card"));

  // set the callback
  ClientInfo.pSlotEventCallBack = SlotEventCallBack;

  Status = SDRegisterClient(hClientHandle, pDevice, &ClientInfo);
  if (!SD_API_SUCCESS(Status)) {
    DEBUGMSG(SDCARD_ZONE_ERROR, (TEXT("SDMemory: Failed to register client : 0x%08X\r\n"),
          Status));
    CleanUpDevice(pDevice);
    DEBUGMSG(SDCARD_ZONE_INIT, (TEXT("SDMemory: -SMC_Init\r\n")));
    return 0;
  }
#ifdef _FOR_MOVI_NAND_
  /**
   * Description : There is no way to distinguish between HSMMC and moviNAND.
   *               So, We assume A HSMMC card is a moviNAND. Default value is false;
   */
  pDevice->IsHSMMC = FALSE;
#endif
  // configure card and retrieve disk size/format information
  if( SDMemCardConfig( pDevice ) != ERROR_SUCCESS ) {
    CleanUpDevice(pDevice);
    DEBUGMSG( SDCARD_ZONE_ERROR, (TEXT("SDMemory: Error initializing MemCard structure and card\r\n")));
    return 0;
  }

  // aet a default block transfer size
  pDevice->BlockTransferSize = DEFAULT_BLOCK_TRANSFER_SIZE;

  // read configuration from registry

  // open the reg path
  if (RegOpenKeyEx(
        HKEY_LOCAL_MACHINE,
        pDevice->pRegPath,
        0,
        KEY_ALL_ACCESS,
        &hSubKey) == ERROR_SUCCESS
     ) {
    // read "BlockTransferSize"
    dataLength = sizeof(pDevice->BlockTransferSize);
    RegQueryValueEx(
        hSubKey,
        BLOCK_TRANSFER_SIZE_KEY,
        NULL,
        NULL,
        (PUCHAR)&(pDevice->BlockTransferSize),
        &dataLength);
    if (pDevice->BlockTransferSize != DEFAULT_BLOCK_TRANSFER_SIZE) {
      DEBUGMSG(SDCARD_ZONE_INIT, (TEXT("SDMemory: Initialize: Using block transfer size of %d blocks\r\n"),
            pDevice->BlockTransferSize));
    }

    // read "SingleBlockWrites"
    // default to using mulitple block writes
    pDevice->SingleBlockWrites = FALSE;
    dataLength = sizeof(DWORD);
    data = 0;
    if (RegQueryValueEx(
          hSubKey,
          SINGLE_BLOCK_WRITES_KEY,
          NULL,
          NULL,
          (PUCHAR)&data,
          &dataLength) == ERROR_SUCCESS
       ) {
      // key is present
      pDevice->SingleBlockWrites = TRUE;
      DEBUGMSG(SDCARD_ZONE_INIT, (TEXT("SDMemory: Initialize: Using single block write commands only\r\n")));
    }

    // read "DisablePowerManagement"
    // on by default unless key is present
    pDevice->EnablePowerManagement = TRUE;
    dataLength = sizeof(DWORD);
    data = 0;
    if (RegQueryValueEx(
          hSubKey,
          DISABLE_POWER_MANAGEMENT,
          NULL,
          NULL,
          (PUCHAR)&data,
          &dataLength) == ERROR_SUCCESS
       ) {
      // key is present
      DEBUGMSG(SDCARD_ZONE_INIT, (TEXT("SDMemory: Initialize: Disabled power management\r\n")));
      pDevice->EnablePowerManagement = FALSE;
    }

    // read "IdleTimeout"
    pDevice->IdleTimeout = DEFAULT_IDLE_TIMEOUT;
    dataLength = sizeof(pDevice->IdleTimeout);
    if (RegQueryValueEx(
          hSubKey,
          IDLE_TIMEOUT,
          NULL,
          NULL,

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91国偷自产一区二区三区观看| 在线视频你懂得一区二区三区| 中文字幕日韩一区| 欧美精品久久99| 成人h精品动漫一区二区三区| 五月天丁香久久| 亚洲色图在线播放| 久久嫩草精品久久久精品一| 欧美日韩一区不卡| av在线这里只有精品| 精品综合免费视频观看| 亚洲一区二三区| 亚洲欧洲韩国日本视频| 久久蜜桃一区二区| 日韩欧美国产综合在线一区二区三区| 欧美制服丝袜第一页| 成人免费av在线| 国产一区二区不卡| 日本中文在线一区| 一区二区三区美女视频| 国产欧美一区二区三区沐欲| 日韩一区二区三区av| 欧美丝袜丝交足nylons图片| 99久久精品免费看| 成人av先锋影音| 国产福利一区二区| 国产九九视频一区二区三区| 麻豆国产精品视频| 久久精品理论片| 蜜臀精品久久久久久蜜臀| 亚洲一区二区欧美激情| 夜夜揉揉日日人人青青一国产精品 | 亚洲自拍欧美精品| 亚洲欧美日韩在线不卡| 国产精品萝li| 国产精品卡一卡二| 国产精品久久一卡二卡| 国产精品乱人伦| 国产精品高潮呻吟久久| 国产精品视频在线看| 国产精品久久久一本精品| 欧美激情综合在线| 国产精品美女久久久久av爽李琼| 日本一区二区动态图| 国产精品久久一级| 亚洲精品久久久久久国产精华液| 亚洲免费在线视频| 亚洲一区在线视频观看| 日韩中文字幕av电影| 天天综合网天天综合色| 蓝色福利精品导航| 国产精品一级在线| 97久久精品人人做人人爽50路| 色综合久久久久久久久久久| 色噜噜狠狠色综合中国| 欧美日韩精品电影| 精品欧美一区二区久久| 国产偷v国产偷v亚洲高清| 中文字幕亚洲不卡| 亚洲不卡一区二区三区| 国内精品在线播放| 99久久精品国产麻豆演员表| 欧美色图天堂网| 欧美一级爆毛片| 国产欧美日韩麻豆91| 亚洲靠逼com| 日韩电影在线一区| 国产成人精品1024| 91久久线看在观草草青青| 欧美美女直播网站| 久久久久久日产精品| 亚洲人123区| 日韩二区三区在线观看| 成人一级视频在线观看| 在线看日本不卡| www久久久久| 玉米视频成人免费看| 免费av网站大全久久| 成人国产电影网| 91精品国产免费| 中文字幕日本不卡| 日本aⅴ亚洲精品中文乱码| 国产69精品久久777的优势| 在线看日韩精品电影| 久久亚洲一区二区三区四区| 洋洋av久久久久久久一区| 麻豆91在线播放免费| 色综合色综合色综合| 亚洲精品一线二线三线| 亚洲国产综合91精品麻豆| 国产在线不卡一区| 欧美日韩亚洲综合在线| 国产精品视频看| 蜜桃视频在线观看一区| 色猫猫国产区一区二在线视频| 久久综合久久鬼色中文字| 亚洲成人自拍网| 91香蕉视频在线| 久久人人97超碰com| 亚洲bdsm女犯bdsm网站| 处破女av一区二区| 精品国产乱码久久久久久久| 亚洲最色的网站| 成人免费观看视频| 精品国产乱码久久| 日韩av电影天堂| 色狠狠桃花综合| 国产精品美女久久福利网站| 精品中文字幕一区二区| 91精品国产色综合久久| 亚洲mv大片欧洲mv大片精品| 91视频观看免费| 日本一区二区综合亚洲| 久久成人久久鬼色| 欧美一区午夜精品| 一区二区三区欧美| 色噜噜夜夜夜综合网| 亚洲欧洲av另类| 成人免费视频一区| 国产三区在线成人av| 精品一区二区三区的国产在线播放| 欧美日韩免费视频| 亚洲激情男女视频| 色婷婷综合久久久久中文一区二区| 国产欧美一区二区在线| 国产福利精品一区| 亚洲国产电影在线观看| 粉嫩欧美一区二区三区高清影视| 精品1区2区在线观看| 国产一区激情在线| 久久综合网色—综合色88| 久久av资源网| 26uuu久久天堂性欧美| 韩国女主播成人在线| 欧美本精品男人aⅴ天堂| 蜜臀av性久久久久蜜臀av麻豆 | 欧美一区二区视频在线观看2020 | 激情欧美日韩一区二区| 日韩美女视频一区二区在线观看| 日韩电影在线免费| 日韩欧美的一区二区| 精品一区二区精品| 久久久美女艺术照精彩视频福利播放| 国产麻豆日韩欧美久久| 国产欧美视频一区二区| thepron国产精品| 亚洲色图视频网| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 亚洲乱码国产乱码精品精可以看| 色爱区综合激月婷婷| 亚洲午夜在线视频| 91精品国产高清一区二区三区蜜臀 | 精品视频999| 蜜桃视频免费观看一区| 久久综合九色综合欧美就去吻| 粉嫩高潮美女一区二区三区| 国产精品久久看| 精品婷婷伊人一区三区三| 免费日本视频一区| 国产日韩欧美精品一区| 成人手机电影网| 亚洲在线观看免费| 欧美一区二区精品| 久久综合久久99| 亚洲风情在线资源站| 久久久蜜桃精品| 波多野结衣中文字幕一区 | 自拍偷在线精品自拍偷无码专区| 91在线观看成人| 日韩精品一二三区| 久久毛片高清国产| 日本韩国一区二区三区视频| 日韩中文欧美在线| 中文乱码免费一区二区| 欧美在线高清视频| 另类小说综合欧美亚洲| 国产精品初高中害羞小美女文| 欧美午夜影院一区| 狠狠网亚洲精品| 亚洲午夜一二三区视频| 久久久久久久久岛国免费| 91免费视频网址| 激情欧美日韩一区二区| 一区二区三区精品| 久久只精品国产| 在线观看av不卡| 国产麻豆成人精品| 亚洲h在线观看| 中文字幕在线观看不卡视频| 精品三级av在线| 在线日韩国产精品| 成人福利视频在线| 成人免费一区二区三区视频| 欧美一二三区精品| 91九色02白丝porn| 国产 欧美在线| 久久99国产精品久久| 偷拍日韩校园综合在线| 日韩美女视频19| 国产丝袜美腿一区二区三区|