1 // MllMain.cpp : DLL
\83A
\83v
\83\8a\83P
\81[
\83V
\83\87\83\93\82Ì
\83G
\83\93\83g
\83\8a \83|
\83C
\83\93\83g
\82ð
\92è
\8b`
\82µ
\82Ü
\82·
\81B
\r
5 #include "CasProxy.h"
\r
7 #ifndef SCARD_AUTOALLOCATE
8 #define SCARD_AUTOALLOCATE (DWORD)(-1) /**< see SCardFreeMemory() */
11 //////////////////////////////////////////////////////////////////////
\r
12 // WinSCard
\83t
\83b
\83N
\r
13 //////////////////////////////////////////////////////////////////////
\r
14 LONG SCardConnect(SCARDCONTEXT hContext, LPCSTR szReader, DWORD dwShareMode, DWORD dwPreferredProtocols, LPSCARDHANDLE phCard, LPDWORD pdwActiveProtocol)
\r
16 //
\83v
\83\8d\83L
\83V
\83C
\83\93\83X
\83^
\83\93\83X
\90¶
\90¬
\r
17 CCasProxy *pCasProxy = new CCasProxy();
\r
19 //
\83T
\81[
\83o
\82É
\90Ú
\91±
\r
20 if(!pCasProxy->Connect()){
\r
23 return SCARD_E_READER_UNAVAILABLE;
\r
26 //
\83n
\83\93\83h
\83\8b\82É
\96\84\82ß
\8d\9e\82Þ
\r
27 *phCard = reinterpret_cast<SCARDHANDLE>(pCasProxy);
\r
28 if(pdwActiveProtocol)*pdwActiveProtocol = SCARD_PROTOCOL_T1;
\r
30 return SCARD_S_SUCCESS;
\r
33 LONG SCardDisconnect(SCARDHANDLE hCard, DWORD dwDisposition)
\r
35 //
\83T
\81[
\83o
\82©
\82ç
\90Ø
\92f
\r
36 CCasProxy *pCasProxy = reinterpret_cast<CCasProxy *>(hCard);
\r
37 if(pCasProxy)delete pCasProxy;
\r
39 return SCARD_S_SUCCESS;
\r
42 LONG SCardEstablishContext(DWORD dwScope, LPCVOID pvReserved1, LPCVOID pvReserved2, LPSCARDCONTEXT phContext)
\r
44 return SCARD_S_SUCCESS;
\r
47 LONG SCardFreeMemory(SCARDCONTEXT hContext, LPCVOID pvMem)
\r
49 return SCARD_S_SUCCESS;
\r
52 LONG SCardListReaders(SCARDCONTEXT hContext, LPCSTR mszGroups, LPSTR mszReaders, LPDWORD pcchReaders)
\r
54 const char szReaderName[] = "BonCasLink Proxy Card Reader\0";
\r
57 if((*pcchReaders == SCARD_AUTOALLOCATE) && mszReaders){
\r
58 *((LPCSTR *)mszReaders) = szReaderName;
\r
59 return SCARD_S_SUCCESS;
\r
62 *pcchReaders = sizeof(szReaderName);
\r
66 if(mszReaders) memcpy(mszReaders, szReaderName, sizeof(szReaderName));
\r
68 return SCARD_S_SUCCESS;
\r
71 LONG SCardTransmit(SCARDHANDLE hCard, LPCSCARD_IO_REQUEST pioSendPci, LPCBYTE pbSendBuffer, DWORD cbSendLength, LPSCARD_IO_REQUEST pioRecvPci, LPBYTE pbRecvBuffer, LPDWORD pcbRecvLength)
\r
73 //
\83T
\81[
\83o
\82É
\83\8a\83N
\83G
\83X
\83g
\91\97\8eó
\90M
\r
74 CCasProxy *pCasProxy = reinterpret_cast<CCasProxy *>(hCard);
\r
75 if(!pCasProxy)return SCARD_E_READER_UNAVAILABLE;
\r
77 DWORD dwRecvLen = pCasProxy->TransmitCommand(pbSendBuffer, cbSendLength, pbRecvBuffer);
\r
78 if(pcbRecvLength)*pcbRecvLength = dwRecvLen;
\r
80 return (dwRecvLen)? SCARD_S_SUCCESS : SCARD_E_TIMEOUT;
\r
83 LONG SCardReleaseContext(SCARDCONTEXT hContext)
\r
85 return SCARD_S_SUCCESS;
\r