OSDN Git Service

add dist
[rec10/rec10-git.git] / dist / trunk / b25-remote / b25-client.cpp
diff --git a/dist/trunk/b25-remote/b25-client.cpp b/dist/trunk/b25-remote/b25-client.cpp
new file mode 100755 (executable)
index 0000000..f108e00
--- /dev/null
@@ -0,0 +1,87 @@
+// 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
+//\r
+#include <winscard.h>
+#include <stdio.h>\r
+#include "CasProxy.h"\r
+#include "W2L.h"\r
+#ifndef SCARD_AUTOALLOCATE
+  #define SCARD_AUTOALLOCATE (DWORD)(-1)  /**< see SCardFreeMemory() */
+#endif\r
+
+//////////////////////////////////////////////////////////////////////\r
+// WinSCard\83t\83b\83N\r
+//////////////////////////////////////////////////////////////////////\r
+LONG SCardConnect(SCARDCONTEXT hContext, LPCSTR szReader, DWORD dwShareMode, DWORD dwPreferredProtocols, LPSCARDHANDLE phCard, LPDWORD pdwActiveProtocol)\r
+{\r
+       // \83v\83\8d\83L\83V\83C\83\93\83X\83^\83\93\83X\90\90¬\r
+       CCasProxy *pCasProxy = new CCasProxy();\r
+
+       // \83T\81[\83o\82É\90Ú\91±\r
+       if(!pCasProxy->Connect()){\r
+               delete pCasProxy;\r
+               *phCard = NULL;\r
+               return SCARD_E_READER_UNAVAILABLE;\r
+               }
+\r
+       // \83n\83\93\83h\83\8b\82É\96\84\82ß\8d\9e\82Þ\r
+       *phCard = reinterpret_cast<SCARDHANDLE>(pCasProxy);\r
+       if(pdwActiveProtocol)*pdwActiveProtocol = SCARD_PROTOCOL_T1;\r
+\r
+       return SCARD_S_SUCCESS;\r
+}\r
+\r
+LONG SCardDisconnect(SCARDHANDLE hCard, DWORD dwDisposition)\r
+{\r
+       // \83T\81[\83o\82©\82ç\90Ø\92f\r
+       CCasProxy *pCasProxy = reinterpret_cast<CCasProxy *>(hCard);\r
+       if(pCasProxy)delete pCasProxy;\r
+\r
+       return SCARD_S_SUCCESS;\r
+}\r
+\r
+LONG SCardEstablishContext(DWORD dwScope, LPCVOID pvReserved1, LPCVOID pvReserved2, LPSCARDCONTEXT phContext)\r
+{
+       return SCARD_S_SUCCESS;\r
+}\r
+\r
+LONG SCardFreeMemory(SCARDCONTEXT hContext, LPCVOID pvMem)\r
+{\r
+       return SCARD_S_SUCCESS;\r
+}\r
+\r
+LONG SCardListReaders(SCARDCONTEXT hContext, LPCSTR mszGroups, LPSTR mszReaders, LPDWORD pcchReaders)\r
+{\r
+       const char szReaderName[] = "BonCasLink Proxy Card Reader\0";\r
+\r
+       if(pcchReaders){\r
+               if((*pcchReaders == SCARD_AUTOALLOCATE) && mszReaders){\r
+                       *((LPCSTR *)mszReaders) = szReaderName;         \r
+                       return SCARD_S_SUCCESS;\r
+                       }\r
+               else{\r
+                       *pcchReaders = sizeof(szReaderName);\r
+                       }\r
+               }\r
+\r
+       if(mszReaders) memcpy(mszReaders, szReaderName, sizeof(szReaderName));\r
+\r
+       return SCARD_S_SUCCESS;\r
+}\r
+\r
+LONG SCardTransmit(SCARDHANDLE hCard, LPCSCARD_IO_REQUEST pioSendPci, LPCBYTE pbSendBuffer, DWORD cbSendLength, LPSCARD_IO_REQUEST pioRecvPci, LPBYTE pbRecvBuffer, LPDWORD pcbRecvLength)\r
+{\r
+       // \83T\81[\83o\82É\83\8a\83N\83G\83X\83g\91\97\8eó\90M\r
+       CCasProxy *pCasProxy = reinterpret_cast<CCasProxy *>(hCard);\r
+       if(!pCasProxy)return SCARD_E_READER_UNAVAILABLE;\r
+\r
+       DWORD dwRecvLen = pCasProxy->TransmitCommand(pbSendBuffer, cbSendLength, pbRecvBuffer);\r
+       if(pcbRecvLength)*pcbRecvLength = dwRecvLen;\r
+\r
+       return (dwRecvLen)? SCARD_S_SUCCESS : SCARD_E_TIMEOUT;\r
+}\r
+\r
+LONG SCardReleaseContext(SCARDCONTEXT hContext)\r
+{\r
+       return SCARD_S_SUCCESS;\r
+}\r
+