1 // BcasCard.h: CBcasCard
\83N
\83\89\83X
\82Ì
\83C
\83\93\83^
\81[
\83t
\83F
\83C
\83X
\r
3 //////////////////////////////////////////////////////////////////////
\r
11 #include <winscard.h>
\r
19 //
\83G
\83\89\81[
\83R
\81[
\83h
\r
20 #define BCEC_NOERROR 0x00000000UL //
\83G
\83\89\81[
\82È
\82µ
\r
21 #define BCEC_INTERNALERROR 0x00000001UL //
\93à
\95\94\83G
\83\89\81[
\r
22 #define BCEC_NOTESTABLISHED 0x00000002UL //
\83R
\83\93\83e
\83L
\83X
\83g
\8am
\97§
\8e¸
\94s
\r
23 #define BCEC_NOCARDREADERS 0x00000003UL //
\83J
\81[
\83h
\83\8a\81[
\83_
\82ª
\82È
\82¢
\r
24 #define BCEC_ALREADYOPEN 0x00000004UL //
\8aù
\82É
\83I
\81[
\83v
\83\93\8dÏ
\82Ý
\r
25 #define BCEC_CARDOPENERROR 0x00000005UL //
\83J
\81[
\83h
\83I
\81[
\83v
\83\93\8e¸
\94s
\r
26 #define BCEC_CARDNOTOPEN 0x00000006UL //
\83J
\81[
\83h
\96¢
\83I
\81[
\83v
\83\93\r
27 #define BCEC_TRANSMITERROR 0x00000007UL //
\92Ê
\90M
\83G
\83\89\81[
\r
28 #define BCEC_BADARGUMENT 0x00000008UL //
\88ø
\90\94\82ª
\95s
\90³
\r
29 #define BCEC_ECMREFUSED 0x00000009UL // ECM
\8eó
\95t
\8b\91\94Û
\r
38 const DWORD GetCardReaderNum(void) const;
\r
39 LPCTSTR GetCardReaderName(const DWORD dwIndex = 0UL) const;
\r
41 const bool OpenCard(LPCTSTR lpszReader = NULL);
\r
42 void CloseCard(void);
\r
44 const BYTE * GetBcasCardID(void);
\r
45 const BYTE * GetInitialCbc(void);
\r
46 const BYTE * GetSystemKey(void);
\r
47 const BYTE * GetKsFromEcm(const BYTE *pEcmData, const DWORD dwEcmSize);
\r
49 const DWORD GetLastError(void) const;
\r
52 const bool EnumCardReader(void);
\r
53 const bool TransmitCommand(const BYTE *pSendData, const DWORD dwSendSize, BYTE *pRecvData, const DWORD dwMaxRecv, DWORD *pdwRecvSize = NULL);
\r
54 const bool InitialSetting(void);
\r
56 SCARDCONTEXT m_ScardContext;
\r
57 SCARDHANDLE m_hBcasCard;
\r
59 bool m_bIsEstablish;
\r
62 vector<wstring> m_CardReaderArray;
\r
64 vector<string> m_CardReaderArray;
\r
67 struct TAG_BCASCARDINFO
\r
69 BYTE BcasCardID[6]; // Card ID
\r
70 BYTE SystemKey[32]; // Descrambling system key
\r
71 BYTE InitialCbc[8]; // Descrambler CBC initial value
\r
74 struct TAG_ECMSTATUS
\r
76 DWORD dwLastEcmSize; //
\8dÅ
\8cã
\82É
\96â
\82¢
\8d\87\82í
\82¹
\82Ì
\82 \82Á
\82½ECM
\83T
\83C
\83Y
\r
77 BYTE LastEcmData[256]; //
\8dÅ
\8cã
\82É
\96â
\82¢
\8d\87\82í
\82¹
\82Ì
\82 \82Á
\82½ECM
\83f
\81[
\83^
\r
78 BYTE KsData[16]; // Ks Odd + Even
\r
81 DWORD m_dwLastError;
\r
84 const bool StoreEcmData(const BYTE *pEcmData, const DWORD dwEcmSize);
\r