OSDN Git Service

fix memory leak, thanks to Valgrind
[rec10/rec10-git.git] / b25-remote / BCasCard.h
index e793203..c3cebb6 100755 (executable)
@@ -1,85 +1,85 @@
-// BcasCard.h: CBcasCard \83N\83\89\83X\82Ì\83C\83\93\83^\81[\83t\83F\83C\83X\r
-//\r
-//////////////////////////////////////////////////////////////////////\r
-\r
-#pragma once\r
-\r
-
-#include <memory>\r
-#include <vector>\r
-#include <string>\r
-#include <winscard.h>\r
-\r
-\r
-using std::vector;\r
-using std::wstring;\r
-using std::string;\r
-\r
-\r
-// \83G\83\89\81[\83R\81[\83h\r
-#define BCEC_NOERROR                   0x00000000UL    // \83G\83\89\81[\82È\82µ\r
-#define BCEC_INTERNALERROR             0x00000001UL    // \93à\95\94\83G\83\89\81[\r
-#define BCEC_NOTESTABLISHED            0x00000002UL    // \83R\83\93\83e\83L\83X\83g\8am\97§\8e¸\94s\r
-#define BCEC_NOCARDREADERS             0x00000003UL    // \83J\81[\83h\83\8a\81[\83_\82ª\82È\82¢\r
-#define BCEC_ALREADYOPEN               0x00000004UL    // \8aù\82É\83I\81[\83v\83\93\8dÏ\82Ý\r
-#define BCEC_CARDOPENERROR             0x00000005UL    // \83J\81[\83h\83I\81[\83v\83\93\8e¸\94s\r
-#define BCEC_CARDNOTOPEN               0x00000006UL    // \83J\81[\83h\96¢\83I\81[\83v\83\93\r
-#define BCEC_TRANSMITERROR             0x00000007UL    // \92Ê\90M\83G\83\89\81[\r
-#define BCEC_BADARGUMENT               0x00000008UL    // \88ø\90\94\82ª\95s\90³\r
-#define BCEC_ECMREFUSED                        0x00000009UL    // ECM\8eó\95t\8b\91\94Û\r
-\r
-\r
-class CBcasCard\r
-{\r
-public:\r
-       CBcasCard();\r
-       ~CBcasCard();\r
-\r
-       const DWORD GetCardReaderNum(void) const;\r
-       LPCTSTR GetCardReaderName(const DWORD dwIndex = 0UL) const;\r
-\r
-       const bool OpenCard(LPCTSTR lpszReader = NULL);\r
-       void CloseCard(void);\r
-\r
-       const BYTE * GetBcasCardID(void);\r
-       const BYTE * GetInitialCbc(void);\r
-       const BYTE * GetSystemKey(void);\r
-       const BYTE * GetKsFromEcm(const BYTE *pEcmData, const DWORD dwEcmSize);\r
-\r
-       const DWORD GetLastError(void) const;\r
-\r
-protected:\r
-       const bool EnumCardReader(void);\r
-       const bool TransmitCommand(const BYTE *pSendData, const DWORD dwSendSize, BYTE *pRecvData, const DWORD dwMaxRecv, DWORD *pdwRecvSize = NULL);\r
-       const bool InitialSetting(void);\r
-\r
-       SCARDCONTEXT m_ScardContext;\r
-       SCARDHANDLE m_hBcasCard;\r
-\r
-       bool m_bIsEstablish;\r
-\r
-#ifdef _UNICODE        \r
-       vector<wstring> m_CardReaderArray;\r
-#else\r
-       vector<string> m_CardReaderArray;\r
-#endif\r
-\r
-       struct TAG_BCASCARDINFO\r
-       {\r
-               BYTE BcasCardID[6];             // Card ID\r
-               BYTE SystemKey[32];             // Descrambling system key\r
-               BYTE InitialCbc[8];             // Descrambler CBC initial value\r
-       } m_BcasCardInfo;\r
-       \r
-       struct TAG_ECMSTATUS\r
-       {\r
-               DWORD dwLastEcmSize;    // \8dÅ\8cã\82É\96â\82¢\8d\87\82í\82¹\82Ì\82 \82Á\82½ECM\83T\83C\83Y\r
-               BYTE LastEcmData[256];  // \8dÅ\8cã\82É\96â\82¢\8d\87\82í\82¹\82Ì\82 \82Á\82½ECM\83f\81[\83^\r
-               BYTE KsData[16];                // Ks Odd + Even        \r
-       } m_EcmStatus;\r
-       \r
-       DWORD m_dwLastError;\r
-\r
-private:\r
-       const bool StoreEcmData(const BYTE *pEcmData, const DWORD dwEcmSize);\r
-};\r
+// BcasCard.h: CBcasCard クラスのインターフェイス
+//
+//////////////////////////////////////////////////////////////////////
+
+#pragma once
+
+
+#include <memory>
+#include <vector>
+#include <string>
+#include <winscard.h>
+
+
+using std::vector;
+using std::wstring;
+using std::string;
+
+
+// エラーコード
+#define BCEC_NOERROR                   0x00000000UL    // エラーなし
+#define BCEC_INTERNALERROR             0x00000001UL    // 内部エラー
+#define BCEC_NOTESTABLISHED            0x00000002UL    // コンテキスト確立失敗
+#define BCEC_NOCARDREADERS             0x00000003UL    // カードリーダがない
+#define BCEC_ALREADYOPEN               0x00000004UL    // 既にオープン済み
+#define BCEC_CARDOPENERROR             0x00000005UL    // カードオープン失敗
+#define BCEC_CARDNOTOPEN               0x00000006UL    // カード未オープン
+#define BCEC_TRANSMITERROR             0x00000007UL    // 通信エラー
+#define BCEC_BADARGUMENT               0x00000008UL    // 引数が不正
+#define BCEC_ECMREFUSED                        0x00000009UL    // ECM受付拒否
+
+
+class CBcasCard
+{
+public:
+       CBcasCard();
+       ~CBcasCard();
+
+       const DWORD GetCardReaderNum(void) const;
+       LPCTSTR GetCardReaderName(const DWORD dwIndex = 0UL) const;
+
+       const bool OpenCard(LPCTSTR lpszReader = NULL);
+       void CloseCard(void);
+
+       const BYTE * GetBcasCardID(void);
+       const BYTE * GetInitialCbc(void);
+       const BYTE * GetSystemKey(void);
+       const BYTE * GetKsFromEcm(const BYTE *pEcmData, const DWORD dwEcmSize);
+
+       const DWORD GetLastError(void) const;
+
+protected:
+       const bool EnumCardReader(void);
+       const bool TransmitCommand(const BYTE *pSendData, const DWORD dwSendSize, BYTE *pRecvData, const DWORD dwMaxRecv, DWORD *pdwRecvSize = NULL);
+       const bool InitialSetting(void);
+
+       SCARDCONTEXT m_ScardContext;
+       SCARDHANDLE m_hBcasCard;
+
+       bool m_bIsEstablish;
+
+#ifdef _UNICODE        
+       vector<wstring> m_CardReaderArray;
+#else
+       vector<string> m_CardReaderArray;
+#endif
+
+       struct TAG_BCASCARDINFO
+       {
+               BYTE BcasCardID[6];             // Card ID
+               BYTE SystemKey[32];             // Descrambling system key
+               BYTE InitialCbc[8];             // Descrambler CBC initial value
+       } m_BcasCardInfo;
+       
+       struct TAG_ECMSTATUS
+       {
+               DWORD dwLastEcmSize;    // 最後に問い合わせのあったECMサイズ
+               BYTE LastEcmData[256];  // 最後に問い合わせのあったECMデータ
+               BYTE KsData[16];                // Ks Odd + Even        
+       } m_EcmStatus;
+       
+       DWORD m_dwLastError;
+
+private:
+       const bool StoreEcmData(const BYTE *pEcmData, const DWORD dwEcmSize);
+};