X-Git-Url: http://git.osdn.net/view?p=rec10%2Frec10-git.git;a=blobdiff_plain;f=b25-remote%2Fb25-client.cpp;fp=b25-remote%2Fb25-client.cpp;h=bb2ee89d60eda476586291d505dcf5a3c38da8ef;hp=f108e00aea7c3942c76f6e23b801e9e420dd5ca9;hb=27219f6be039cc2fc5a4457495cca664ee7a417e;hpb=4cf75bdb3f60a04a4ee3eb316ae58c1f64479523 diff --git a/b25-remote/b25-client.cpp b/b25-remote/b25-client.cpp index f108e00..bb2ee89 100755 --- a/b25-remote/b25-client.cpp +++ b/b25-remote/b25-client.cpp @@ -1,87 +1,87 @@ -// MllMain.cpp : DLL ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃Gƒ“ƒgƒŠ ƒ|ƒCƒ“ƒg‚ð’è‹`‚µ‚Ü‚·B -// +// MllMain.cpp : DLL アプリケーションのエントリ ポイントを定義します。 +// #include -#include -#include "CasProxy.h" -#include "W2L.h" +#include +#include "CasProxy.h" +#include "W2L.h" #ifndef SCARD_AUTOALLOCATE #define SCARD_AUTOALLOCATE (DWORD)(-1) /**< see SCardFreeMemory() */ -#endif - -////////////////////////////////////////////////////////////////////// -// WinSCardƒtƒbƒN -////////////////////////////////////////////////////////////////////// -LONG SCardConnect(SCARDCONTEXT hContext, LPCSTR szReader, DWORD dwShareMode, DWORD dwPreferredProtocols, LPSCARDHANDLE phCard, LPDWORD pdwActiveProtocol) -{ - // ƒvƒƒLƒVƒCƒ“ƒXƒ^ƒ“ƒX¶¬ - CCasProxy *pCasProxy = new CCasProxy(); - - // ƒT[ƒo‚ɐڑ± - if(!pCasProxy->Connect()){ - delete pCasProxy; - *phCard = NULL; - return SCARD_E_READER_UNAVAILABLE; +#endif + +////////////////////////////////////////////////////////////////////// +// WinSCardフック +////////////////////////////////////////////////////////////////////// +LONG SCardConnect(SCARDCONTEXT hContext, LPCSTR szReader, DWORD dwShareMode, DWORD dwPreferredProtocols, LPSCARDHANDLE phCard, LPDWORD pdwActiveProtocol) +{ + // プロキシインスタンス生成 + CCasProxy *pCasProxy = new CCasProxy(); + + // サーバに接続 + if(!pCasProxy->Connect()){ + delete pCasProxy; + *phCard = NULL; + return SCARD_E_READER_UNAVAILABLE; } - - // ƒnƒ“ƒhƒ‹‚É–„‚ߍž‚Þ - *phCard = reinterpret_cast(pCasProxy); - if(pdwActiveProtocol)*pdwActiveProtocol = SCARD_PROTOCOL_T1; - - return SCARD_S_SUCCESS; -} - -LONG SCardDisconnect(SCARDHANDLE hCard, DWORD dwDisposition) -{ - // ƒT[ƒo‚©‚çØ’f - CCasProxy *pCasProxy = reinterpret_cast(hCard); - if(pCasProxy)delete pCasProxy; - - return SCARD_S_SUCCESS; -} - -LONG SCardEstablishContext(DWORD dwScope, LPCVOID pvReserved1, LPCVOID pvReserved2, LPSCARDCONTEXT phContext) + + // ハンドルに埋め込む + *phCard = reinterpret_cast(pCasProxy); + if(pdwActiveProtocol)*pdwActiveProtocol = SCARD_PROTOCOL_T1; + + return SCARD_S_SUCCESS; +} + +LONG SCardDisconnect(SCARDHANDLE hCard, DWORD dwDisposition) +{ + // サーバから切断 + CCasProxy *pCasProxy = reinterpret_cast(hCard); + if(pCasProxy)delete pCasProxy; + + return SCARD_S_SUCCESS; +} + +LONG SCardEstablishContext(DWORD dwScope, LPCVOID pvReserved1, LPCVOID pvReserved2, LPSCARDCONTEXT phContext) +{ + return SCARD_S_SUCCESS; +} + +LONG SCardFreeMemory(SCARDCONTEXT hContext, LPCVOID pvMem) +{ + return SCARD_S_SUCCESS; +} + +LONG SCardListReaders(SCARDCONTEXT hContext, LPCSTR mszGroups, LPSTR mszReaders, LPDWORD pcchReaders) +{ + const char szReaderName[] = "BonCasLink Proxy Card Reader\0"; + + if(pcchReaders){ + if((*pcchReaders == SCARD_AUTOALLOCATE) && mszReaders){ + *((LPCSTR *)mszReaders) = szReaderName; + return SCARD_S_SUCCESS; + } + else{ + *pcchReaders = sizeof(szReaderName); + } + } + + if(mszReaders) memcpy(mszReaders, szReaderName, sizeof(szReaderName)); + + return SCARD_S_SUCCESS; +} + +LONG SCardTransmit(SCARDHANDLE hCard, LPCSCARD_IO_REQUEST pioSendPci, LPCBYTE pbSendBuffer, DWORD cbSendLength, LPSCARD_IO_REQUEST pioRecvPci, LPBYTE pbRecvBuffer, LPDWORD pcbRecvLength) +{ + // サーバにリクエスト送受信 + CCasProxy *pCasProxy = reinterpret_cast(hCard); + if(!pCasProxy)return SCARD_E_READER_UNAVAILABLE; + + DWORD dwRecvLen = pCasProxy->TransmitCommand(pbSendBuffer, cbSendLength, pbRecvBuffer); + if(pcbRecvLength)*pcbRecvLength = dwRecvLen; + + return (dwRecvLen)? SCARD_S_SUCCESS : SCARD_E_TIMEOUT; +} + +LONG SCardReleaseContext(SCARDCONTEXT hContext) { - return SCARD_S_SUCCESS; -} - -LONG SCardFreeMemory(SCARDCONTEXT hContext, LPCVOID pvMem) -{ - return SCARD_S_SUCCESS; -} - -LONG SCardListReaders(SCARDCONTEXT hContext, LPCSTR mszGroups, LPSTR mszReaders, LPDWORD pcchReaders) -{ - const char szReaderName[] = "BonCasLink Proxy Card Reader\0"; - - if(pcchReaders){ - if((*pcchReaders == SCARD_AUTOALLOCATE) && mszReaders){ - *((LPCSTR *)mszReaders) = szReaderName; - return SCARD_S_SUCCESS; - } - else{ - *pcchReaders = sizeof(szReaderName); - } - } - - if(mszReaders) memcpy(mszReaders, szReaderName, sizeof(szReaderName)); - - return SCARD_S_SUCCESS; -} - -LONG SCardTransmit(SCARDHANDLE hCard, LPCSCARD_IO_REQUEST pioSendPci, LPCBYTE pbSendBuffer, DWORD cbSendLength, LPSCARD_IO_REQUEST pioRecvPci, LPBYTE pbRecvBuffer, LPDWORD pcbRecvLength) -{ - // ƒT[ƒo‚ɃŠƒNƒGƒXƒg‘—ŽóM - CCasProxy *pCasProxy = reinterpret_cast(hCard); - if(!pCasProxy)return SCARD_E_READER_UNAVAILABLE; - - DWORD dwRecvLen = pCasProxy->TransmitCommand(pbSendBuffer, cbSendLength, pbRecvBuffer); - if(pcbRecvLength)*pcbRecvLength = dwRecvLen; - - return (dwRecvLen)? SCARD_S_SUCCESS : SCARD_E_TIMEOUT; -} - -LONG SCardReleaseContext(SCARDCONTEXT hContext) -{ - return SCARD_S_SUCCESS; -} + return SCARD_S_SUCCESS; +}