收藏 分销(赏)

VC封装USB接口的智能卡读写.doc

上传人:xrp****65 文档编号:7673295 上传时间:2025-01-11 格式:DOC 页数:2 大小:36.50KB 下载积分:10 金币
下载 相关 举报
VC封装USB接口的智能卡读写.doc_第1页
第1页 / 共2页
VC封装USB接口的智能卡读写.doc_第2页
第2页 / 共2页
本文档共2页,全文阅读请下载到手机保存,查看更方便
资源描述
VC封装USB接口的智能卡读写(应用层) 学习进程   2009-10-20 00:14   阅读42   评论0   字号: 大大  中中  小小 VC封装USB接口的智能卡读写(应用层) 编译时需要包含头文件“Winscard.h”和库文件winscard.1ib。 第一步要通过初始化连接函数获得设备的连接旬柄: SCARDCONTEXT hSC = NULL; LONG IReturn = 0: IReturn=SCardEstablishContext(SCARD COPE SER.NULL.NULL.& hSC): 第一个参数指定资源管理连接的范围,另一个可选值为SCARD_ SCOPE_ SYSTEM。 第二步要取得读写器列表: char szReaderNameList[MAX_RESPONSE]: DWORD dwLength = O: IReturn= SCardListReaders(hSC, NULL, szReaderNameList,&dwLength): 如果调用成功,则szReaderNameList中存放的是读写器的名字,如果有多个则中间用‘\O’分割,dwLength的值为返回的有效字符的长度,包括所有的‘\O’。得到读写器的名字后就可以取得某个读写器中智能卡的句柄. 第三步要取得指定读写器中卡片的句柄(与卡片建立连接): 要取得读写器列表中第一个读写器中卡片的句柄: SCARDHANDLE hCardHandIe = NULL; DW0RD dwActiveProtocol= O: IReturn=SCardConnect{hSC,szReaderNameList,SCARD_ SHARE_EXCLUSIVE,SCARD_ PROTOCOL_T0, SCARD_PR0T0C0L_T1,& hCardHandle, &dwActiveProtoco1); 第三个参数表示连接的共享模式, 另外两个模式是SCARD_ SHARE SHARED和SCARD_SHARE_DIRECT。第四个参数指定首选的通信协议类型包括T:0和T=1,dwActiveProtocol返回最终确定的通信协议类型。注意:调用此函数时读写器中如果没有智能卡则会返回相应错误。 以上两个函数可以实现卡片的检测?? 第四步与卡片进行交互: 1、获得智能卡的句柄后就可以对卡片进行操作了,如读取ATR: char szReaderName[300]: DWORD dwATRLength = 40; BYTE pbyATR[40]; DW 0RD dwCardState = 0: IReturn = SCardStatus(hCardHandle, szReaderName, &dwLength, &dwCardState, &dwActiveProtoco1, pbyATR.&dwATRLength): 调用成功后dwATRLength的值就是实际读出的ATR的长度。 2、向卡片发送命令并获得结果: SCARD_IO_REQUEST ScardlORequest; Scardl0Request.dwProtocol= dwActiveProtocol; ScardlORequest.cbPciLength = sizeof(SCARD_IO_REQUEST); BYTE pbyCommand[20]; //此处加入设置要发送的命令的代码... BYTE pbyReceived[100]; DW0RD dwRecLength = sizeof(pbyReceived); IReturn = SCardTransmit(hCardHandle, & Scard10Request,pbyCommand,5,NULL,pbyReceived,& dwRecLength): ScardlORequest.dwProtocol的值应该设置为最终确定的通信协议类型,第四个参数指定要发送的命令的长度,如果调用成功,则dwRecLength的值就是收到的应答的长度。 注:在开始事务处理前要调用SCardBeginTransaction(hCardHandle)。该函数启动一个事务,启动前等待对hCardHandle操作的所以事务结束。启动后阻塞所有对该卡片存取的应用程序。 结束事务处理时要调用SCardBeginTransaction(hCardHandle,SCARD_LEAVE_CARD)。该函数对应于之前声明的事务,使得其他应用程序对卡片的访问激活。 第五步断开与卡片的连接: 当对卡片的操作完成后应该断开与卡片的连接: IReturn=SCardDisconnect{hCardHandle,SCARD_UNPOWER_ CARD); 第二个参数指定断开连接时读写器要执行的操作,其他的可选值包括SCARD_LEAVE CARD、SCARD_RESET CARD 和SCARD_EJECT_CARD。 第六步释放读卡器设备句柄: 在对所有的读写器的操作都完成以后,需要释放设备的连接句柄:SCardReleaseContext(hSC);
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服