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

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

?? pcmsock.cpp

?? WinCE5.0BSP for Renesas SH7770
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
//
//  Copyright(C) Renesas Technology Corp. 2005. All rights reserved.
//
// PCCARD driver for ITS-DS7
//
// FILE     : pcmsock.cpp
// CREATED  : 2005.02.03
// MODIFIED : 
// AUTHOR   : Renesas Technology Corp.
// HARDWARE : RENESAS ITS-DS7
// HISTORY  : 
//            2005.02.03
//            - Created release code.
//                (based on PCCARD driver for ASPEN for WCE5.0)

//
// 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.
//
/*++
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:  

Abstract:

    MR-SHPC PCMCIA Socket Services Object for PCMCIA(16-bit) Interface.

Notes: 
--*/
#include <windows.h>
#include <types.h>
#include <socksv2.h>
#include <memory.h>
#include <ceddk.h>
#include <debug.h>
#include "PdSocket.h"
#define ZONE_SOCKET ZONE_PDD


//--------------------Pcmcia Socket Implementation--------------------------------------------
const SS_SOCKET_INFO CPCardSocket::ms_PcmciaSocketInfo =
{
    SOCK_CAP_MEM_CARD |
    SOCK_CAP_IO_MEMORY_CARD |
    SOCK_CAP_WAKEUP_BYCLIENT |
	SOCK_CAP_ONLY_SYSINTR |
    SOCK_CAP_WAKEUP_BYEVENT |
    SOCK_CAP_KEEP_POWERED,      //dwSocketCaps
    SOCK_CAP_PWRCYCLE |
    SOCK_CAP_CD |
    SOCK_CAP_SUSPEND_RESUME,  // Socket Interrupt Capability Set follow bitmap.
    SOCK_CAP_PWRCYCLE |
    SOCK_CAP_CD |
    SOCK_CAP_SUSPEND_RESUME,  // Socket status report capability
    0, // Socket status indicate capability
    0,          // Number of power entry this socket have.
    0,             // Number of Window supported in this Socket.
    ( DWORD )
    PCMCIABus,  //.
    ( DWORD ) -
    1,     // Card Number.
    { - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}
};
const SS_SOCKET_STATE CPCardSocket::ms_SockInitState =
{
    SOCK_EVENT_PWRCYCLE |
    SOCK_EVENT_CD |
    SOCK_EVENT_SUSPEND_RESUME |
    SOCK_EVENT_WP |
    SOCK_EVENT_BVD1 |
    SOCK_EVENT_BVD2, // Initial EventMask
    0, // Event Changed.
    0, // Event Status
    CFG_IFACE_MEMORY,  //default interface type
    0,  // Interrupt Enable.
    0,  // Vcc
    0,  // Vpp1
    0   // Vpp2

};

DWORD CPCardSocket::sdwSocketLastIndex = 1;

CPCardSocket::CPCardSocket( int nSlot, CPCCardBusBridge* pBridge ) : CPCMCIASocketBase<CStaticMemoryWindow<CPCardSocket>, CStaticIOWindow<CPCardSocket>, CStaticWindowBridgeContainer<CPCCardBusBridge>, CPCCardBusBridge>( pBridge )
{
    m_nSlot = nSlot;
    m_dwSocketIndex = 0;
    while( m_dwSocketIndex == 0 )
    {
        m_dwSocketIndex = ( DWORD ) InterlockedIncrement( ( LONG * ) &sdwSocketLastIndex ); 
        //Make sure that no other socket with that index exists.
        CPCardSocket* pSocket = GetSocket( ( HANDLE ) m_dwSocketIndex );
        if( pSocket != NULL )
        {
            // Duplicated , Retry.
            m_dwSocketIndex = 0;
            pSocket->DeRef();
        }
    }

    DEBUGCHK( m_pBridge );

    m_SockState = ms_SockInitState;
    mss_PcmciaSocketInfo = ms_PcmciaSocketInfo;

    for( DWORD dwIndex = 0; dwIndex < IRQ_ROUTINGTABLE_SIZE; dwIndex++ )
    {
        mss_PcmciaSocketInfo.bArrayIrqRouting[dwIndex] = ( BYTE )pBridge->GetClientInterrupt( m_nSlot );
    }

    mss_PcmciaSocketInfo.dwNumOfPowerEntry = PCMCIA_POWER_ENTRIES;

    mss_PcmciaSocketInfo.dwNumOfWindows = pBridge->GetMemWindowCount( m_nSlot ) +
                                          pBridge->GetIoWindowCount( m_nSlot );
    
    mss_PcmciaSocketInfo.dwBusNumber = 0;

    m_bResuming = FALSE;

    m_pBridge->SetupWakeupSource( FALSE );
    m_pBridge->EnableClientInterrupt( m_nSlot, FALSE );
    m_pBridge->SetupWakeupSource( FALSE );
    m_pBridge->ApplyPower( m_nSlot, 0, 0 );

    DEBUGMSG( ZONE_INIT,
              ( TEXT( "CPCardSocket (Socket=%d Index=%d) Created\r\n" ),
                GetSocketNumber(),
                GetSocketHandle() ) );
}
CPCardSocket::~CPCardSocket()
{
    DEBUGMSG( ZONE_SOCKET, ( TEXT( "+CPCardSocket::Deinitialize()\r\n" ) ) );
    Lock();
    m_pBridge->SetupWakeupSource( FALSE );
    m_pBridge->EnableClientInterrupt( m_nSlot, FALSE );
    m_pBridge->SetupWakeupSource( FALSE );
    BOOL bInitWindow = CardDeInitWindow();
    DEBUGCHK( bInitWindow );
    // If necessary, force a removal
    m_pBridge->ApplyPower( m_nSlot, 0, 0 );
	m_pBridge->SetCardType( m_nSlot, CFG_IFACE_MEMORY );
    Unlock();
    DEBUGMSG( ZONE_SOCKET, ( TEXT( "-PCMSocket::Deinitialize()\r\n" ) ) );
    DEBUGMSG( ZONE_INIT,
              ( TEXT( "CPCardSocket (Socket=%d Index=%d) Deleted\r\n" ),
                GetSocketNumber(),
                GetSocketHandle() ) );
}
STATUS CPCardSocket::GetPowerEntry( PDWORD pdwNumOfEnery, PSS_POWER_ENTRY pPowerEntry )
{
    STATUS status = CERR_BAD_ARGS;
    if( pdwNumOfEnery != NULL && pPowerEntry != NULL )
    {
        DWORD dwNumOfCopied = min( *pdwNumOfEnery, PCMCIA_POWER_ENTRIES );
        if( dwNumOfCopied != 0 )
        {
            memcpy( pPowerEntry,
                CPCCardBusBridge::cs_rgPowerEntries,
                    dwNumOfCopied * sizeof( SS_POWER_ENTRY ) );
            *pdwNumOfEnery = dwNumOfCopied;
            status = CERR_SUCCESS;
        }
    }
    return status;
}

//
// InquireSocket - return Socket Info
// return CERR_SUCCESS on success, CERR_UNSUPPORTED_SERVICE if size is anomolous
//
STATUS CPCardSocket::CardInquireSocket( PSS_SOCKET_INFO pSocketInfo )
{
    if( pSocketInfo )
    {
        *pSocketInfo = mss_PcmciaSocketInfo;
        return CERR_SUCCESS;
    }
    else
    {
        return CERR_BAD_ARGS;
    }
}
//
// GetSocket - return Socket state
// return CERR_SUCCESS on success, CERR_UNSUPPORTED_SERVICE if size is anomolous
//
STATUS CPCardSocket::CardGetSocket( PSS_SOCKET_STATE pState )
{
    DEBUGMSG( ZONE_SOCKET, ( TEXT( "+PCMSocket::GetSocket()\r\n" ) ) );
    Lock();
    if( pState )
    {
        // Read voltage information
        m_SockState.uVpp2 = m_SockState.uVpp1;

        // This is only capability we have.
        m_SockState.dwEventStatus = 0;
        m_SockState.dwEventStatus |= ( m_pBridge->IsCardInserted(m_nSlot) ?
                                       SOCK_EVENT_CD :
                                       0 );
        m_SockState.dwEventStatus |= ( m_pBridge->IsCardReady(m_nSlot) ?
                                       SOCK_EVENT_READY :
                                       0 );

        *pState = m_SockState;
        pState->dwEventChanged = 0; //pState->dwEventMask;

        DEBUGMSG( ZONE_SOCKET,
                  ( TEXT( "-PCMSocket::GetSocket(): dwEventMask: %x dwEventChanged: %x dwEventStatus: %x\r\n" ),
                    pState->dwEventMask,
                    pState->dwEventChanged,
                    pState->dwEventStatus ) );
    }
    Unlock();
    return CERR_SUCCESS;
}

//
// PDCardSetSocket
//
// @func    STATUS | PDCardSetSocket | Set the socket state of the specified socket.
// @rdesc   Returns one of the CERR_* return codes in cardserv.h.
//
// @comm    This function sets the specified socket's state and adjusts the socket
//          controller appropriately.
//          PDCardGetSocketState will usually be called first and adjustments will
//          be made to the PDCARD_SOCKET_STATE structure before PDCardSetSocketState
//          is called.  This avoids duplicated socket state on different layers and
//          it avoids unintentionally setting socket parameters.
//
// @xref <f PDCardGetSocketState>
//

STATUS CPCardSocket::CardSetSocket( PSS_SOCKET_STATE pState )
{
    Lock();
    STATUS status = CERR_SUCCESS;
    if( m_pBridge && pState )
    {
        //
        // Check socket power level indexes
        //
        m_SockState.dwEventMask = pState ->dwEventMask;
        m_SockState.dwEventChanged &= ~pState->dwEventChanged;

        // Do we need to do somthing for fIREQRouting?
        if( ( pState->dwInteruptStatus & SOCK_INT_STATUS_CHG_WAKE ) !=
            ( m_SockState.dwInteruptStatus & SOCK_INT_STATUS_CHG_WAKE ) )
        {
            m_pBridge->SetupWakeupSource( ( pState->dwInteruptStatus & SOCK_INT_STATUS_CHG_WAKE ) !=
                                          0 );
        }
        if( ( pState->dwInteruptStatus & SOCK_INT_FUNC_IRQ_ROUTING ) !=
            ( m_SockState.dwInteruptStatus & SOCK_INT_FUNC_IRQ_ROUTING ) )
        {
            m_pBridge->EnableClientInterrupt( m_nSlot, ( pState->dwInteruptStatus & SOCK_INT_FUNC_IRQ_ROUTING ) !=
                                              0 );
        };
        m_SockState.dwInteruptStatus = pState->dwInteruptStatus;
        m_SockState.fIREQRouting = pState->fIREQRouting;

        // Set the card interface (IO & memory or memory only)
        if( m_SockState.dwInterfaceType != pState->dwInterfaceType )
        {
            if( pState->dwInterfaceType == CFG_IFACE_MEMORY_IO )
            {
                m_pBridge->SetCardType( m_nSlot, CFG_IFACE_MEMORY_IO );
                m_SockState.dwInterfaceType = CFG_IFACE_MEMORY_IO;
            }
            else if( pState->dwInterfaceType == CFG_IFACE_MEMORY )
            {
                m_pBridge->SetCardType( m_nSlot, CFG_IFACE_MEMORY );
                m_SockState.dwInterfaceType = CFG_IFACE_MEMORY;
            }
        }

        if( ( pState->dwEventStatus & SOCK_EVENT_EJECT ) != 0 ||
            ( pState->dwEventStatus & SOCK_EVENT_INSERT ) != 0 )
        {
            // Ask for ejection of the card.
            DEBUGMSG( ZONE_PDD,
                      ( TEXT( "PDCardSetSocket  PCMSocket. Gernerate Artificial Eject\r\n" ) ) );
            // We have to force 
            m_pBridge->SetInterruptEvent( m_nSlot, PCMCIA_INTERRUPT_FORCE_EJECT );
        }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区导航在线播放| 中文字幕视频一区二区三区久| 麻豆成人在线观看| 中文字幕一区二区不卡| 欧美人妇做爰xxxⅹ性高电影| 秋霞电影一区二区| 亚洲在线免费播放| 国产精品视频一区二区三区不卡| 欧美日本在线看| 91免费视频观看| 丁香婷婷深情五月亚洲| 日韩成人精品视频| 一区二区三区中文字幕| 久久久久久久久久久99999| 精品无码三级在线观看视频| 91在线码无精品| 欧美一二三在线| 亚洲伦理在线免费看| 日本vs亚洲vs韩国一区三区 | 久久精品国产一区二区| 国产露脸91国语对白| 91黄色免费看| 久久久天堂av| 美腿丝袜在线亚洲一区| 国产成人av在线影院| 欧美日韩精品电影| 欧美国产日韩亚洲一区| 日韩影视精彩在线| av欧美精品.com| 欧美一区二区三区视频在线| 国产精品麻豆一区二区| 麻豆精品视频在线观看免费 | 成人app网站| 国产99一区视频免费| 国产精品美女一区二区三区| 在线观看不卡一区| 国产精品 欧美精品| 日本欧美一区二区三区乱码| 人人狠狠综合久久亚洲| 免费观看在线综合色| 中文一区一区三区高中清不卡| 日日噜噜夜夜狠狠视频欧美人| 久久久99免费| 欧美一区二区私人影院日本| 一本大道av伊人久久综合| 国产在线精品不卡| 美女视频黄 久久| 性感美女久久精品| 一卡二卡三卡日韩欧美| 国产精品久久毛片av大全日韩| 日韩免费视频一区| 91精品在线麻豆| 91麻豆精品国产综合久久久久久| 91福利视频在线| 欧美在线免费视屏| 日本黄色一区二区| 日本韩国欧美国产| 欧美视频一区二区三区| 欧美性猛交xxxx乱大交退制版| 一本色道久久综合狠狠躁的推荐| av电影在线观看完整版一区二区| 国产激情视频一区二区在线观看| 美女任你摸久久| 日韩一区精品视频| 蜜桃一区二区三区在线| 国产在线视频一区二区三区| 日韩成人免费看| 国产专区欧美精品| 国产91对白在线观看九色| 成人黄页在线观看| 在线观看不卡视频| 精品国产乱码久久久久久免费 | 亚洲影视在线观看| 蜜乳av一区二区三区| 白白色 亚洲乱淫| 欧美日本一区二区在线观看| 日韩美女一区二区三区四区| 久久久综合九色合综国产精品| 中文字幕欧美日本乱码一线二线| 国产精品久久久久四虎| 偷窥国产亚洲免费视频| 国产一区二区0| 欧美伊人精品成人久久综合97| 欧美一级在线观看| 国产精品成人免费精品自在线观看| 亚洲国产wwwccc36天堂| 韩日精品视频一区| 欧美一级搡bbbb搡bbbb| 国产精品乱码妇女bbbb| 青青草97国产精品免费观看| 91麻豆精品在线观看| 欧美一区二区视频在线观看| 国产夜色精品一区二区av| 毛片av一区二区三区| 一本色道久久综合狠狠躁的推荐| 久久这里只有精品视频网| 亚洲成人免费视| 欧美亚洲高清一区二区三区不卡| 国产亚洲精品超碰| 国产精品性做久久久久久| 欧美变态tickling挠脚心| 婷婷一区二区三区| 欧美日韩国产乱码电影| 亚洲二区在线观看| 欧美亚洲综合久久| 性欧美疯狂xxxxbbbb| 93久久精品日日躁夜夜躁欧美| 成人免费av在线| 亚洲影院理伦片| 日韩一区二区视频在线观看| 免费观看在线综合| 久久久99精品免费观看| 国产91露脸合集magnet| 中文字幕一区二区三区在线观看| www.成人网.com| 午夜精品福利在线| 日韩精品中文字幕在线一区| 国产一区日韩二区欧美三区| 国产精品美女久久久久av爽李琼| 不卡av电影在线播放| 国产精品久久久久久久久久免费看| 不卡在线视频中文字幕| 成人免费视频在线观看| 欧美日韩亚洲不卡| 日韩国产高清影视| 国产精品人成在线观看免费| 91久久免费观看| 国产综合久久久久影院| 亚洲精品国产成人久久av盗摄 | 亚洲成人动漫av| 国产精品久久久久四虎| 日韩欧美另类在线| 91免费看`日韩一区二区| 美女在线视频一区| 综合久久综合久久| 精品免费日韩av| 欧美精三区欧美精三区| 91丨porny丨蝌蚪视频| 极品少妇一区二区三区精品视频| 一区二区三区在线免费| 国产亚洲精品福利| 久久久久久久综合色一本| 91精品欧美久久久久久动漫| www.欧美.com| 粉嫩aⅴ一区二区三区四区五区| 日本美女一区二区| 丝袜脚交一区二区| 天涯成人国产亚洲精品一区av| 中文字幕一区av| **欧美大码日韩| 国产精品美女久久久久久久| 国产欧美一区二区精品秋霞影院| 欧美一区二区视频在线观看2022 | 精品一区二区国语对白| 青青草97国产精品免费观看 | 亚洲aⅴ怡春院| 午夜视频在线观看一区| 视频一区视频二区在线观看| 五月综合激情日本mⅴ| 日韩成人午夜电影| 韩国一区二区三区| 成人一级视频在线观看| 国产精品白丝av| 色狠狠综合天天综合综合| 欧美最猛黑人xxxxx猛交| 欧美一区二区三区在线观看 | 成人91在线观看| 色噜噜夜夜夜综合网| 欧美精品精品一区| 欧美精品一区在线观看| 自拍偷拍亚洲综合| 婷婷六月综合网| www..com久久爱| 日韩三级在线观看| 日韩伦理免费电影| 精品一区二区三区欧美| 国产a区久久久| 欧美日韩不卡一区| 欧美一区二区三区视频免费| 国产精品乱子久久久久| 亚洲va欧美va人人爽| 成人ar影院免费观看视频| 日韩一二三区视频| 一区二区在线观看免费视频播放 | 亚洲在线免费播放| 国产欧美一区二区在线观看| 国产精品的网站| 日本视频在线一区| 另类人妖一区二区av| 在线看日本不卡| 日韩毛片在线免费观看| 国产精品77777竹菊影视小说| 欧美精品久久一区二区三区| 国产精品传媒视频| 成人午夜在线播放| 久久精品日产第一区二区三区高清版| 男男成人高潮片免费网站| 欧美日韩在线一区二区| 中文字幕亚洲一区二区av在线 | 99国产精品视频免费观看|