📄 pcmciawr.cpp
字号:
//******************************************************************************
//
//
// 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 + -