OSDN Git Service

fix memory leak, thanks to Valgrind
[rec10/rec10-git.git] / b25-remote / b25-client.cpp
index f108e00..bb2ee89 100755 (executable)
@@ -1,87 +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
+// MllMain.cpp : DLL アプリケーションのエントリ ポイントを定義します。
+//
 #include <winscard.h>
 #include <winscard.h>
-#include <stdio.h>\r
-#include "CasProxy.h"\r
-#include "W2L.h"\r
+#include <stdio.h>
+#include "CasProxy.h"
+#include "W2L.h"
 #ifndef SCARD_AUTOALLOCATE
   #define SCARD_AUTOALLOCATE (DWORD)(-1)  /**< see SCardFreeMemory() */
 #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
+#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;
                }
                }
-\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
+
+       // ハンドルに埋め込む
+       *phCard = reinterpret_cast<SCARDHANDLE>(pCasProxy);
+       if(pdwActiveProtocol)*pdwActiveProtocol = SCARD_PROTOCOL_T1;
+
+       return SCARD_S_SUCCESS;
+}
+
+LONG SCardDisconnect(SCARDHANDLE hCard, DWORD dwDisposition)
+{
+       // サーバから切断
+       CCasProxy *pCasProxy = reinterpret_cast<CCasProxy *>(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<CCasProxy *>(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;\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
+       return SCARD_S_SUCCESS;
+}