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