-// 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);
+};