1 // MllMain.cpp : DLL アプリケーションのエントリ ポイントを定義します。
7 #ifndef SCARD_AUTOALLOCATE
8 #define SCARD_AUTOALLOCATE (DWORD)(-1) /**< see SCardFreeMemory() */
11 //////////////////////////////////////////////////////////////////////
13 //////////////////////////////////////////////////////////////////////
14 LONG SCardConnect(SCARDCONTEXT hContext, LPCSTR szReader, DWORD dwShareMode, DWORD dwPreferredProtocols, LPSCARDHANDLE phCard, LPDWORD pdwActiveProtocol)
17 CCasProxy *pCasProxy = new CCasProxy();
20 if(!pCasProxy->Connect()){
23 return SCARD_E_READER_UNAVAILABLE;
27 *phCard = reinterpret_cast<SCARDHANDLE>(pCasProxy);
28 if(pdwActiveProtocol)*pdwActiveProtocol = SCARD_PROTOCOL_T1;
30 return SCARD_S_SUCCESS;
33 LONG SCardDisconnect(SCARDHANDLE hCard, DWORD dwDisposition)
36 CCasProxy *pCasProxy = reinterpret_cast<CCasProxy *>(hCard);
37 if(pCasProxy)delete pCasProxy;
39 return SCARD_S_SUCCESS;
42 LONG SCardEstablishContext(DWORD dwScope, LPCVOID pvReserved1, LPCVOID pvReserved2, LPSCARDCONTEXT phContext)
44 return SCARD_S_SUCCESS;
47 LONG SCardFreeMemory(SCARDCONTEXT hContext, LPCVOID pvMem)
49 return SCARD_S_SUCCESS;
52 LONG SCardListReaders(SCARDCONTEXT hContext, LPCSTR mszGroups, LPSTR mszReaders, LPDWORD pcchReaders)
54 const char szReaderName[] = "BonCasLink Proxy Card Reader\0";
57 if((*pcchReaders == SCARD_AUTOALLOCATE) && mszReaders){
58 *((LPCSTR *)mszReaders) = szReaderName;
59 return SCARD_S_SUCCESS;
62 *pcchReaders = sizeof(szReaderName);
66 if(mszReaders) memcpy(mszReaders, szReaderName, sizeof(szReaderName));
68 return SCARD_S_SUCCESS;
71 LONG SCardTransmit(SCARDHANDLE hCard, LPCSCARD_IO_REQUEST pioSendPci, LPCBYTE pbSendBuffer, DWORD cbSendLength, LPSCARD_IO_REQUEST pioRecvPci, LPBYTE pbRecvBuffer, LPDWORD pcbRecvLength)
74 CCasProxy *pCasProxy = reinterpret_cast<CCasProxy *>(hCard);
75 if(!pCasProxy)return SCARD_E_READER_UNAVAILABLE;
77 DWORD dwRecvLen = pCasProxy->TransmitCommand(pbSendBuffer, cbSendLength, pbRecvBuffer);
78 if(pcbRecvLength)*pcbRecvLength = dwRecvLen;
80 return (dwRecvLen)? SCARD_S_SUCCESS : SCARD_E_TIMEOUT;
83 LONG SCardReleaseContext(SCARDCONTEXT hContext)
85 return SCARD_S_SUCCESS;