⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pcmciawr.cpp

📁 wince5.0 pb中pccard源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//******************************************************************************
//
//
// This source code is licensed under Microsoft Shared Source License
// Version 1.0 for Windows CE.
// For a copy of the license visit http://go.microsoft.com/fwlink/?LinkId=3223.
//******************************************************************************

/*++
Module Name:  
	pcmciawr.cpp

Abstract:

    implementation of PCMCIA Legacy API wrappers

--*/

#include <windows.h>
#include <types.h>
#include "cardsv2.h"
#include "pcmciawr.h"

PFN_CardRegisterClient      pfnCardRegisterClient = NULL;
PFN_CardDeregisterClient    pfnCardDeregisterClient = NULL;

PFN_CardGetFirstTuple       pfnCardGetFirstTuple = NULL;
PFN_CardGetNextTuple        pfnCardGetNextTuple = NULL;
PFN_CardGetTupleData        pfnCardGetTupleData = NULL;
PFN_CardGetParsedTuple	pfnCardGetParsedTuple = NULL;

PFN_CardRequestExclusive    pfnCardRequestExclusive = NULL;
PFN_CardReleaseExclusive    pfnCardReleaseExclusive = NULL;
PFN_CardRequestDisable      pfnCardRequestDisable = NULL;
PFN_CardResetFunction       pfnCardResetFunction = NULL;

PFN_CardRequestWindow       pfnCardRequestWindow = NULL;
PFN_CardReleaseWindow       pfnCardReleaseWindow = NULL;
PFN_CardMapWindow		  pfnCardMapWindow = NULL;
PFN_CardMapWindowPhysical   pfnCardMapWindowPhysical = NULL;

PFN_CardGetStatus           pfnCardGetStatus = NULL;
PFN_CardRequestConfiguration pfnCardRequestConfiguration = NULL;
PFN_CardModifyConfiguration pfnCardModifyConfiguration = NULL;
PFN_CardReleaseConfiguration pfnCardReleaseConfiguration = NULL;

PFN_CardRequestConfigRegisterPhAddr pfnCardRequestConfigRegisterPhAddr = NULL;
PFN_CardAccessConfigurationRegister pfnCardAccessConfigurationRegister = NULL;

PFN_CardRequestIRQLine      pfnCardRequestIRQLine = NULL;
PFN_CardReleaseIRQ          pfnCardReleaseIRQ = NULL;
PFN_CardRequestIRQ		pfnCardRequestIRQ = NULL;

PFN_CardGetEventMask		pfnCardGetEventMask = NULL;
PFN_CardSetEventMask		pfnCardSetEventMask = NULL;

HINSTANCE hPCMCIADll = NULL;

BOOL PCMCIAWR_Init(LPCTSTR lpDllName)
{
	
    hPCMCIADll = LoadLibrary(lpDllName);
    if (hPCMCIADll == NULL) {
        NKDbgPrintfW(TEXT("PcmciaN: LoadLibrary(%s) failed %d\r\n"),lpDllName,GetLastError());
        return FALSE;
    }
    else {
        pfnCardRegisterClient = (PFN_CardRegisterClient)GetProcAddress(hPCMCIADll, TEXT("CardRegisterClient"));
        pfnCardDeregisterClient =(PFN_CardDeregisterClient)GetProcAddress(hPCMCIADll, TEXT("CardDeregisterClient"));
        
        pfnCardGetFirstTuple =  (PFN_CardGetFirstTuple)GetProcAddress(hPCMCIADll, TEXT("CardGetFirstTuple"));
        pfnCardGetNextTuple =(PFN_CardGetNextTuple)GetProcAddress(hPCMCIADll, TEXT("CardGetNextTuple"));
        pfnCardGetTupleData = (PFN_CardGetTupleData)GetProcAddress(hPCMCIADll, TEXT("CardGetTupleData"));
        pfnCardGetParsedTuple = (PFN_CardGetParsedTuple)GetProcAddress(hPCMCIADll, TEXT("CardGetParsedTuple"));

        pfnCardRequestExclusive = (PFN_CardRequestExclusive)GetProcAddress(hPCMCIADll, TEXT("CardRequestExclusive"));
        pfnCardReleaseExclusive = (PFN_CardReleaseExclusive)GetProcAddress(hPCMCIADll,TEXT("CardReleaseExclusive"));;
        pfnCardRequestDisable = (PFN_CardRequestDisable)GetProcAddress(hPCMCIADll,TEXT("CardRequestDisable")) ;
        
        pfnCardResetFunction = (PFN_CardResetFunction)GetProcAddress(hPCMCIADll,TEXT("CardResetFunction"));

        pfnCardRequestWindow = (PFN_CardRequestWindow)GetProcAddress(hPCMCIADll,TEXT("CardRequestWindow"));
        pfnCardReleaseWindow = (PFN_CardReleaseWindow)GetProcAddress(hPCMCIADll,TEXT("CardReleaseWindow"));
        pfnCardMapWindow = (PFN_CardMapWindow)GetProcAddress(hPCMCIADll,TEXT("CardMapWindow"));
        pfnCardMapWindowPhysical = (PFN_CardMapWindowPhysical)GetProcAddress(hPCMCIADll,TEXT("CardMapWindowPhysical"));

        pfnCardGetStatus = (PFN_CardGetStatus)GetProcAddress(hPCMCIADll,TEXT("CardGetStatus"));; 
        pfnCardRequestConfiguration =(PFN_CardRequestConfiguration)GetProcAddress(hPCMCIADll,TEXT("CardRequestConfiguration"));
        pfnCardModifyConfiguration = (PFN_CardModifyConfiguration)GetProcAddress(hPCMCIADll,TEXT("CardModifyConfiguration"));;
        pfnCardReleaseConfiguration = (PFN_CardReleaseConfiguration)GetProcAddress(hPCMCIADll,TEXT("CardReleaseConfiguration"));
        pfnCardRequestConfigRegisterPhAddr = (PFN_CardRequestConfigRegisterPhAddr)GetProcAddress(hPCMCIADll,TEXT("CardRequestConfigRegisterPhAddr"));
        pfnCardAccessConfigurationRegister = (PFN_CardAccessConfigurationRegister)GetProcAddress(hPCMCIADll,TEXT("CardAccessConfigurationRegister"));
        
        pfnCardRequestIRQLine = (PFN_CardRequestIRQLine)GetProcAddress(hPCMCIADll,TEXT("CardRequestIRQLine"));
        pfnCardRequestIRQ = (PFN_CardRequestIRQ)GetProcAddress(hPCMCIADll,TEXT("CardRequestIRQ"));
        pfnCardReleaseIRQ = (PFN_CardReleaseIRQ)GetProcAddress(hPCMCIADll,TEXT("CardReleaseIRQ"));

        pfnCardGetEventMask = (PFN_CardGetEventMask)GetProcAddress(hPCMCIADll,TEXT("CardGetEventMask"));
        pfnCardSetEventMask = (PFN_CardSetEventMask)GetProcAddress(hPCMCIADll,TEXT("CardSetEventMask"));
		
    }
    return TRUE;
}
VOID PCMCIAWR_DeInit()
{
    if (hPCMCIADll) {
        BOOL bFree=FreeLibrary(hPCMCIADll);
        ASSERT(bFree==TRUE);
    }
	
    pfnCardRegisterClient = NULL;
    pfnCardDeregisterClient = NULL;
    
    pfnCardGetFirstTuple = NULL;
    pfnCardGetNextTuple = NULL;
    pfnCardGetTupleData = NULL;
    pfnCardGetParsedTuple = NULL;

    pfnCardRequestExclusive = NULL;
    pfnCardReleaseExclusive = NULL;
    pfnCardRequestDisable = NULL;
    
    pfnCardResetFunction = NULL;

    pfnCardRequestWindow = NULL;
    pfnCardReleaseWindow = NULL;
    pfnCardMapWindow = NULL;
    pfnCardMapWindowPhysical = NULL;

    pfnCardGetStatus = NULL; 
    pfnCardRequestConfiguration = NULL;
    pfnCardModifyConfiguration = NULL;
    pfnCardReleaseConfiguration = NULL;
    pfnCardRequestConfigRegisterPhAddr = NULL;
    pfnCardAccessConfigurationRegister = NULL;
    
    pfnCardRequestIRQLine = NULL;
    pfnCardRequestIRQ = NULL;
    pfnCardReleaseIRQ = NULL;

    pfnCardGetEventMask = NULL;
    pfnCardSetEventMask = NULL;
	
    hPCMCIADll = NULL;
}
CARD_CLIENT_HANDLE CardRegisterClient(CLIENT_CALLBACK CallBackFn, PCARD_REGISTER_PARMS pParms)
{
    CARD_CLIENT_HANDLE pReturn = NULL;
    if (pfnCardRegisterClient!=NULL) {
        __try {
            pReturn = pfnCardRegisterClient(CallBackFn, pParms);
        } __except (EXCEPTION_EXECUTE_HANDLER) {
            pReturn = NULL;
        }
    }
    return pReturn;
}
STATUS CardDeregisterClient(CARD_CLIENT_HANDLE hCardClient)
{
    STATUS status=CERR_BAD_HANDLE;
    if (pfnCardDeregisterClient!=NULL) {
        __try {
            status=pfnCardDeregisterClient(hCardClient);
        } __except (EXCEPTION_EXECUTE_HANDLER) {
            status=CERR_BAD_HANDLE;
        }
    }
    return status;
}

STATUS CardGetFirstTuple(PCARD_TUPLE_PARMS pGetTupleParms)
{
    STATUS status=CERR_BAD_HANDLE;
    if (pfnCardGetFirstTuple!=NULL) {
        __try {
            status=pfnCardGetFirstTuple(pGetTupleParms);
        } __except (EXCEPTION_EXECUTE_HANDLER) {
            status=CERR_BAD_HANDLE;
        }
    }
    return status;
}
STATUS CardGetNextTuple(PCARD_TUPLE_PARMS pGetTupleParms)
{
    STATUS status=CERR_BAD_HANDLE;
    if (pfnCardGetNextTuple!=NULL) {
        __try {
            status=pfnCardGetNextTuple(pGetTupleParms);
        } __except (EXCEPTION_EXECUTE_HANDLER) {
            status=CERR_BAD_HANDLE;
        }
    }
    return status;
}
STATUS CardGetTupleData(PCARD_DATA_PARMS pGetTupleData)
{
    STATUS status=CERR_BAD_HANDLE;
    if (pfnCardGetTupleData!=NULL) {
        __try {
            status=pfnCardGetTupleData(pGetTupleData);
        } __except (EXCEPTION_EXECUTE_HANDLER) {
            status=CERR_BAD_HANDLE;
        }
    }
    return status;
}

STATUS CardGetParsedTuple(CARD_SOCKET_HANDLE hSocket, UINT8 uDesiredTuple, PVOID pBuf, PUINT32 pnItems)
{
    STATUS status=CERR_BAD_HANDLE;
    if (pfnCardGetParsedTuple!=NULL) {
        __try {
            status=pfnCardGetParsedTuple(hSocket, uDesiredTuple, pBuf, pnItems);
        } __except (EXCEPTION_EXECUTE_HANDLER) {
            status=CERR_BAD_HANDLE;
        }
    }
    return status;
}

STATUS CardRequestExclusive(CARD_CLIENT_HANDLE hCardClient, CARD_SOCKET_HANDLE hSocket)
{
    STATUS status=CERR_BAD_HANDLE;
    if (pfnCardRequestExclusive!=NULL) {
        __try {
            status=pfnCardRequestExclusive(hCardClient,hSocket);
        } __except (EXCEPTION_EXECUTE_HANDLER) {
            status=CERR_BAD_HANDLE;
        }
    }
    return status;
    
}
STATUS CardReleaseExclusive(CARD_CLIENT_HANDLE hCardClient, CARD_SOCKET_HANDLE hSocket)
{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -