基于PC/SC的智能卡访问及11.11指令封装类

代码下载:http://download.csdn.net/source/2364046

    WIN2000后,微软正式提供对PC/SC智能卡访问的库支持 winscard(WIN98也可以通过安装系统补丁支持),使得用系统API访问不同的读卡器成为可能,这套约定就称为PC/SC,其中包含了对于读卡器的驱动约定和上层API。本人不做读卡器,只是用,所以本文也主要针对的是API的使用和封装。

    所有支持PC/SC驱动的读卡器,都会产生一个系统唯一的名字(多读卡器的时候,跟序号做区分)。然后产生卡片操作上下文,用SCardConnect进行连接,SCardTransmit进行APDU的传送。其中APDU的传送符合ISO7816-4的标准,并不关注ISO7816-3的传输层协议(传输层由驱动完成)。

    附件的API使用例程:

CPCSC card;

 

card.Init();

 

char readers[512];

if(card.ListReaders(readers))

{

    //list readers

    //select and connect reader

    card.ConnectCard(reader);

}

 

//send apdu

card.SELECT(0x3F00);

char response[256];

card.GET_RESPONSE(response,card.m_bySW2);

cout << "MF type" << CPCSC::RS_GetFileType(response);

//.....

 

card.DisConnectCard();

card.Eject();

 

   用监护线程监控卡片插入和拔出的动作。

void Thread_Func()

{

    while(card.GetReaderStatusChange(300) != SCARD_E_TIMEOUT)

    {

        if(card.IsConnc())

        {

             //card insert, get atr

             BYTE atr[200];

             card.GetAtr(atr,200);

            //...

        }

        else

        {

             //card plug

             //......

        }

    }

}

   

你可能感兴趣的:(thread,api,insert,byte,微软)