pcscom.h

来自「RSA C++源代码DEMO,附加DESMD5等众多算法」· C头文件 代码 · 共 81 行

H
81
字号
/*
 *  Card Application Class using PC/SC Standard
 *
 *  Writen by Alfred Meng
 *
 *  Oct. 15, 2000
 *
 *@ident "PCSCOM V1.0"
 */

#ifndef __PCSCOM_H
#define __PCSCOM_H

#define __PCSC__

#include <windows.h>
#include <winscard.h>

#include "ctcomm.h"

#define  MFID    "\x3F\x00"

class TPCSC : public TVSCReader
{
    LONG	 rc;
    SCARDCONTEXT hContext;
    LPTSTR	 lpmszReaderNames;
    DWORD        curReader;
    SCARDHANDLE  hCards[MAXIMUM_SMARTCARD_READERS];
    DWORD        dwActivePro[MAXIMUM_SMARTCARD_READERS];
    DWORD        dwMode[MAXIMUM_SMARTCARD_READERS];
    DWORD        dwPrePro[MAXIMUM_SMARTCARD_READERS];
    BOOL         bStarted; // only for ...

public:

    DWORD	      dwNumReaders;
    SCARD_READERSTATE rsReaders[MAXIMUM_SMARTCARD_READERS];

    TPCSC();

    virtual int   openterm(short  rid = 1);  // Open first PCSC reader if exist
    virtual int   closeterm();
    virtual int   opened();

    virtual int   opensam(int plug);

    virtual int   selectICC(int icc,bool reqATR = true);

    virtual int   hascard();
    virtual int   RequestATR();
    virtual int   ejectcard(bool beep = true);

    virtual int   sendapdu(TAPDU *);

    virtual char  TermType() const;
    virtual char *GetError() const;

    // follow routines is .....
    LONG    Startup();
    void    Shutdown();

    LONG    OpenReader(DWORD rid,DWORD prepro=SCARD_PROTOCOL_T0|SCARD_PROTOCOL_T1,
                                 DWORD smode=SCARD_SHARE_EXCLUSIVE);
                                 /*
                                    SCARD_SHARE_SHARED
                                    SCARD_SHARE_EXCLUSIVE
                                 */
    LONG    CloseReader(DWORD rid);

    BOOL    SelectReader(DWORD rid);
    BOOL    Opened(DWORD rid);


};

LPVOID	SCMalloc (IN DWORD dwSize);
LONG	SCFree (IN LPVOID lpMemory);

#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?