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

📄 pc16bitwr.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:  
	pc16bitwr.cpp

Abstract:

    implementation of 16bit PCCard API wrappers

--*/

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

PFN_CardRegisterClient      pfnCardRegisterClient = NULL;
PFN_CardDeregisterClient    pfnCardDeregisterClient = NULL;

PFN_CardGetFirstTuple       pfnCardGetFirstTuple = NULL;
PFN_CardGetNextTuple        pfnCardGetNextTuple = NULL;
PFN_CardGetTupleData        pfnCardGetTupleData = 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;

PFN_GetSocketStatus	pfnGetSocketStatus  = NULL;
PFN_GetSocketIndex	pfnGetSocketIndex = NULL;
PFN_EnumCard		pfnEnumCard = NULL;
PFN_EnumSocket		pfnEnumSocket = NULL;


HINSTANCE hPCCServDll = NULL;

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

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

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

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

        pfnCardGetEventMask = (PFN_CardGetEventMask)GetProcAddress(hPCCServDll,TEXT("CardGetEventMask"));
        pfnCardSetEventMask = (PFN_CardSetEventMask)GetProcAddress(hPCCServDll,TEXT("CardSetEventMask"));

        pfnEnumSocket = (PFN_EnumSocket)GetProcAddress(hPCCServDll, TEXT("EnumSocket"));
        pfnEnumCard = (PFN_EnumCard)GetProcAddress(hPCCServDll, TEXT("EnumCard"));
        pfnGetSocketStatus = (PFN_GetSocketStatus)GetProcAddress(hPCCServDll, TEXT("GetSocketStatus"));
        pfnGetSocketIndex= (PFN_GetSocketIndex)GetProcAddress(hPCCServDll, TEXT("GetSocketIndex"));
		
    }
    return TRUE;
}
VOID PC16bitWR_DeInit()
{
    if (hPCCServDll) {
        BOOL bFree=FreeLibrary(hPCCServDll);
        ASSERT(bFree==TRUE);
    }
	
    pfnCardRegisterClient = NULL;
    pfnCardDeregisterClient = NULL;
    
    pfnCardGetFirstTuple = NULL;
    pfnCardGetNextTuple = NULL;
    pfnCardGetTupleData = 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;

    pfnEnumCard = NULL;
    pfnEnumSocket = NULL;
    pfnGetSocketIndex = NULL;
    pfnGetSocketStatus = NULL;
	
    hPCCServDll = 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 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)
{
    STATUS status=CERR_BAD_HANDLE;
    if (pfnCardReleaseExclusive!=NULL) {
        __try {
            status=pfnCardReleaseExclusive(hCardClient,hSocket);
        } __except (EXCEPTION_EXECUTE_HANDLER) {
            status=CERR_BAD_HANDLE;
        }
    }
    return status;    
}
STATUS CardRequestDisable(CARD_CLIENT_HANDLE hCardClient, CARD_SOCKET_HANDLE hSocket)
{
    STATUS status=CERR_BAD_HANDLE;
    if (pfnCardRequestDisable!=NULL) {
        __try {
            status=pfnCardRequestDisable(hCardClient,hSocket);
        } __except (EXCEPTION_EXECUTE_HANDLER) {
            status=CERR_BAD_HANDLE;
        }
    }
    return status;    
}

STATUS CardResetFunction(CARD_CLIENT_HANDLE hCardClient, CARD_SOCKET_HANDLE hSock)
{
    STATUS status=CERR_BAD_HANDLE;
    if (pfnCardResetFunction!=NULL) {

⌨️ 快捷键说明

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