当前位置:文档之家› 智能卡技术简介-ACS

智能卡技术简介-ACS

智能卡应用程序的开发

Windows系统提供了大量的API来方便的进行智能卡应用程序的开发,通过它们我们可以直接控制智能卡读卡器对智能卡进行操作,也可以与智能卡建立直接的虚拟连接而不用考虑智能卡读卡器。 智能卡应用程序开发的一般流程是: 1)建立连接(使用函数SCardEstablishContext和SCardConnect,SCardReconnect); 2)开始事务处理(使用函数SCardBeginTransaction); 3)进行事务处理(使用函数SCardTransmit); 4)结束事务处理(使用函数SCardEndTransaction); 5)断开连接(使用函数SCardDisconnect和SCardReleaseContext)。 下面就具体看看各个函数的功能和用法吧! 1)SCardEstablishContext函数用于建立进行设备数据库操作的资源管理器上下文: LONG WINAPI SCardEstablishContext( __in DWORD dwScope, //资源管理器上下文的范围,取值如下: //SCARD_SCOPE_USER---数据库操作在用户域中 //SCARD_SCOPE_SYSTEM---数据库操作在系统域中,调用的应用程序 //必须具有对任何数据库操作的权限 __in LPCVOID pvReserved1, //保留值,必须设为NULL __in LPCVOID pvReserved2, //保留值,必须设为NULL __out LPSCARDCONTEXT phContext //建立的资源管理器上下文句柄 ); 返回值:成功时返回SCARD_S_SUCCESS;失败时返回智能卡特定错误码。 函数返回的资源管理器上下文句柄可以被对设备数据库进行查询和管理的函数使用。如果一个客户试图在远程会话中实现智能卡操作,例如运行在终端服务器上的客户会话,而且客户会话所在的操作系统不支持智能卡重定向,则函数SCardEstablishContext返回ERROR_BROKEN_PIPE。 下面的代码是建立资源管理器上下文的例子: SCARDCONTEXT hSC; LONG lReturn; //Establish the context lReturn = SCardEstablishContext(SCARD_SCOPE_USER, NULL, NULL, &hSC); if(SCARD_S_SUCCESS != lReturn) printf("Failed SCardEstablishContext/n"); else { //Use the context as needed, when done, //free the context by calling SCardReleaseContext } 2)SCardConnect函数利用特定资源管理器上下文,在应用程序与包含在特定读卡器中的智能卡之间建立一条连接: LONG WINAPI SCardConnect( __in SCARDCONTEXT hContext, //资源管理器上下文句柄

相关主题
文本预览
相关文档 最新文档