CN104750630A - 一种pc/sc驱动库在ios设备中的工作方法 - Google Patents
一种pc/sc驱动库在ios设备中的工作方法 Download PDFInfo
- Publication number
- CN104750630A CN104750630A CN201510176569.8A CN201510176569A CN104750630A CN 104750630 A CN104750630 A CN 104750630A CN 201510176569 A CN201510176569 A CN 201510176569A CN 104750630 A CN104750630 A CN 104750630A
- Authority
- CN
- China
- Prior art keywords
- external equipment
- driver library
- card
- information
- ios system
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Abstract
本发明提供一种PC/SC驱动库在IOS设备中的工作方法,属于信息安全领域,该方法包括:PC/SC驱动库从IOS系统中获取外接设备配件协议信息,从应用程序中获取读卡器配件协议信息,获取与IOS系统连接的外接设备,对外接设备和IOS系统之间的通信通道进行初始化,获取通信通道对象,保存该外接设备的外接设备信息,向IOS系统注册中心注册第一通知,判断是否有与IOS系统连接的外接设备,是则等待调用PC/SC驱动库提供的访问外接设备的指令接口,与外接设备通信;否则通过第一通知检测外接设备插入或拔出;采用本发明提供的方法能够实现IOS系统和外接设备之间利用PC/SC驱动库进行通信。
Description
技术领域
本发明涉及一种信息安全领域,特别涉及一种PC/SC驱动库在IOS设备中的工作方法。
背景技术
PC/SC接口是一种基于WINDOWS平台的一个标准用户接口,提供了一个从个人电脑(Personal Computer)到智能卡(SmartCard)的整合环境,允许多个应用共享使用系统同一张智能卡的资源管理器;
随着苹果设备的广泛应用,智能卡与苹果设备相结合进行使用,也受到用户关注。本领域技术人员发现,目前,IOS作为苹果设备的操作系统,不支持PC/SC接口。
发明内容
为解决现有技术中存在的缺陷,本发明提出一种PC/SC驱动库在IOS设备中的工作方法,使PC/SC接口能够应用在IOS系统中,实现IOS系统与外接设备进行通信,该方法包括:
步骤S1:PC/SC驱动库从IOS系统中的外接设备信息中获取外接设备配件协议信息,从应用程序中预设的读卡器设备信息中获取读卡器配件协议信息;
步骤S2:所述PC/SC驱动库根据所述外接设备配件协议信息和所述读卡器配件协议信息,判断是否存在与所述读卡器设备信息匹配的外接设备与所述IOS系统连接,是则执行步骤S3;否则执行步骤S5;
步骤S3:所述PC/SC驱动库将设备匹配标志置位,根据所述外接设备配件协议信息和所述读卡器配件协议信息获取相应的外接设备对象,执行步骤S4;
步骤S4:所述PC/SC驱动库根据所述外接设备对象和所述外接设备配件协议信息,对所述外接设备与所述IOS系统之间的通信通道进行初始化,获取通信通道对象,并保存相应的外接设备信息,执行步骤S5;
步骤S5:所述PC/SC驱动库判断是否已经向IOS系统注册中心注册第一通知,是则执行步骤S6;否则所述PC/SC驱动库向所述IOS系统注册中心注册第一通知,执行步骤S6;
步骤S6:所述PC/SC驱动库根据所述设备匹配标志,判断是否存在与所述读卡器设备信息匹配的外接设备与所述IOS系统连接,是则执行步骤S8;否则执行步骤S7;
步骤S7:所述PC/SC驱动库通过所述第一通知检测外接设备插入或拔出,将所述外接设备的外接设备信息发送给所述应用程序,结束;
其中,当所述PC/SC驱动库通过所述第一通知检测外接设备拔出时,还包括,将所述设备匹配标志复位;
步骤S8:所述PC/SC驱动库从所述外接设备信息中获取第一信息,将所述第一信息报告给所述应用程序;
当所述PC/SC驱动库提供的访问外接设备的指令接口被调用时,判断接收到的参数是否合法,是则执行步骤W1;否则向应用程序发送参数不合法信息,结束;
步骤W1:根据所述接收到的参数封装访问外部设备指令,将封装的访问外接设备的指令通过所述通信通道对象发送给所述外接设备;
步骤W2:接收所述外接设备返回的访问外接设备响应,将所述访问外接设备响应发送给所述应用程序,结束。
所述步骤S2,具体包括:
步骤S2-1:所述PC/SC驱动库对所述外接设备配件协议信息进行判断,如果所述读卡器配件协议信息中包含所述外接设备配件协议信息,则执行步骤S3;否则执行步骤S5。
所述步骤S1,具体包括:
PC/SC驱动库获取IOS系统中的ExternalAccessory.framework框架中的第一单例对象,通过所述第一单例对象的第一实例方法获取IOS系统中的外接设备信息,对获取到的外接设备信息进行枚举,从所述外接设备信息中获取外接设备配件协议信息;获取应用程序已经注册的读卡器设备信息,从所述读卡器设备信息中获取读卡器配件协议信息。
所述步骤S6,具体包括:
所述PC/SC驱动库判断所述设备匹配标志是否置位,是则存在与所述读卡器设备信息匹配的外接设备与所述IOS系统连接,执行步骤S8;否则不存在与所述读卡器设备信息匹配的外接设备与所述IOS系统连接,执行步骤S7。
所述步骤S8,具体包括:
所述PC/SC驱动库从所述外接设备信息中获取第一信息,保存所述外接设备信息,将所述第一信息通过所述PC/SC驱动库的第一接口报告给所述应用程序。
所述PC/SC驱动库将封装的访问外接设备的指令通过所述通信通道对象发送给所述外接设备,具体包括:
所述PC/SC驱动库将封装的访问外接设备的指令通过所述通信通道对象和所述IOS系统提供的接口发送给所述外接设备。
所述步骤S4之后,还包括:
步骤A1:所述PC/SC驱动库初始化卡槽状态标识;
步骤A2:所述PC/SC驱动库根据所述外接设备配件协议信息和所述读卡器配件协议信息,判断是否存在与所述读卡器配件协议匹配的外接设备,是则执行步骤A4;否则执行步骤A3;
步骤A3:所述PC/SC驱动库休眠,预设时间后再唤醒,返回步骤A2;
步骤A4:所述PC/SC驱动库判断所述应用程序是否设置PC/SC驱动库提供的委派函数,是则执行步骤A5;否则执行步骤A3;
步骤A5:所述PC/SC驱动库休眠,预设时间后再唤醒,向所述IOS系统发送查询卡槽状态指令;
步骤A6:所述PC/SC驱动库接收所述IOS系统返回的卡槽状态响应,根据所述卡槽状态响应和所述卡槽状态标识,判断卡槽状态是否发生改变,是则执行步骤A7;否则返回步骤A2;
步骤A7:所述PC/SC驱动库根据所述卡槽状态响应设置卡槽状态标识,判断所述应用程序是否设置所述PC/SC驱动库提供的委派函数,是则执行步骤A8;否则返回步骤A2;
步骤A8:所述PC/SC驱动库通过委派函数向所述应用程序发送卡槽状态变化信息。
所述步骤S4之后,还包括:
所述PC/SC驱动库启动查询卡槽状态线程,循环进行查询卡槽状态的操作,直到所述PC/SC驱动库释放第一句柄时结束;
当所述PC/SC驱动库的释放资源函数被调用时,释放所述第一句柄。
所述查询卡槽状态的操作,具体包括:
步骤B1:所述PC/SC驱动库初始化卡槽状态标识;
步骤B2:所述PC/SC驱动库根据所述外接设备配件协议信息和所述读卡器配件协议信息,判断是否存在与所述读卡器配件协议匹配的外接设备,是则执行步骤B4;否则执行步骤B3;
步骤B3:所述PC/SC驱动库休眠,预设时间后再唤醒,返回步骤B2;
步骤B4:所述PC/SC驱动库向所述IOS系统发送查询卡槽状态指令,执行步骤B5;
步骤B5:所述PC/SC驱动库接收所述IOS系统返回的卡槽状态响应,根据所述卡槽状态响应设置卡槽状态标识。
所述步骤S8之后,还包括:
步骤C1:当所述PC/SC驱动库的第二接口被调用时,判断所述设备匹配标志是否置位,是则执行步骤C2;否则退出所述第二接口;
步骤C2:所述PC/SC驱动库初始化计时标识;
步骤C3:所述PC/SC驱动库的第二接口判断外部传入的智能卡状态参数是否与所述PC/SC驱动库中保存的卡槽状态标识相同,是则执行步骤C5;否则执行步骤C4;
步骤C4:所述PC/SC驱动返回卡槽状态变化信息,退出所述第二接口;
步骤C5:所述PC/SC驱动库判断是否需要计算超时,是则执行步骤C6;否则执行步骤C3;
步骤C6:所述PC/SC驱动库根据所述计时标识和外部传入的超时时间参数,判断是否超时,是则退出所述第二接口;否则执行步骤C7;
步骤C7:所述PC/SC驱动库休眠,预设时间后再唤醒,更新所述计时标识,返回步骤C3。
所述PC/SC驱动库根据所述外接设备对象和所述外接设备配件协议信息,对所述外接设备与所述IOS系统之间的通信通道进行初始化,具体包括:
所述PC/SC驱动库根据外接设备对象和所述外接设备配件协议信息,通过所述IOS系统提供的初始化通道接口,对所述外接设备与所述IOS系统之间的通信通道进行初始化。
所述第一通知,具体为:
实时监控外接设备插入通知和实时监控外接设备拔出通知;
所述PC/SC驱动库向所述IOS系统注册中心注册第一通知,具体为:
所述PC/SC驱动库通过执行包含通知的监控者、通知的回调方法、通知的名称以及通知的入参参数的注册第一通知的方法,向所述IOS系统注册中心注册第一通知;
当所述PC/SC驱动库的释放资源函数被调用的时,从所述IOS系统注册中心中移除所述第一通知。
所述步骤S8中,还包括,当所述PC/SC驱动库的第一函数被调用时,PC/SC驱动库对所述第一函数进行初始化操作,生成并保存资源管理器上下文,将所述资源管理器上下文发送给所述应用程序。
所述PC/SC驱动库提供的接口,包括:卡片上电指令接口、卡片下电指令接口、查询卡槽状态指令接口、数据通讯指令接口;
当所述PC/SC驱动库提供的卡片上电指令接口被调用时,判断第一个入参参数与已保存的资源管理器上下文是否匹配,是则执行步骤a;否则报错;
步骤a:判断第二个入参参数是否与已保存的外接设备信息中的第一信息匹配,是则将所述卡片句柄发送给应用程序,保存已上电的卡片信息,并将其与已保存的资源管理器上下文建立对应关系;否则报错;
当PC/SC驱动库提供的查询卡槽状态接口被应用程序调用时,判断是否已经获取到卡片句柄,是则根据所述接收到的参数封装查询卡槽状态指令,将封装的查询卡槽状态指令通过所述通信通道对象发送给所述外接设备,接收所述外接设备返回的查询卡槽状态响应,用所述查询卡槽状态响应中的卡槽状态更新卡片信息里面的卡槽状态,将所述查询卡槽状态响应发送给所述应用程序;否则报错;
当所述PC/SC驱动库提供的数据通讯指令接口被调用时,判断是否已经获取到卡片句柄,并且所述卡片句柄里的卡槽状态信息是有卡已上电,是则根据所述接收到的参数封装智能卡操作指令,将封装的智能卡操作指令通过所述通信通道对象发送给所述外接设备,接收所述外接设备返回的智能卡操作响应,将所述智能卡操作响应发送给所述应用程序;否则报错;
当所述PC/SC驱动库提供的卡片下电指令接口被调用时,判断是否获取到卡片句柄,是则封装下电指令,并将封装的下电指令通过所述通信通道对象发送给所述外接设备,接收所述外接设备返回的下电响应,将所述下电响应发送给所述应用程序,释放卡片句柄,清空相应的卡片信息;否则报错。
所述方法还包括:当所述PC/SC驱动库的释放资源函数被调用时,释放所述资源管理器上下文。
本发明的有益效果为:采用以上方法,PC/SC驱动库获取IOS系统中所有外接设备的配件协议信息,获取应用程序注册的配件协议信息,根据应用程序注册的配件协议信息和IOS系统中所有外接设备的配件协议信息,找到匹配的外接设备,向IOS系统注册中心注册过第一通知,使用第一通知实时监控IOS系统中外接设备的插入和拔出动作;通过上述方法,通过PC/SC驱动库实现IOS系统和外接设备进行通信。
附图说明
图1和图2为本发明实施例1提供的一种PC/SC驱动库在IOS设备中的工作方法流程图;
图3为本发明实施例2提供的一种查询卡槽状态的方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述,但不作为对本发明的限定。
本发明提供的实施例中,PC/SC驱动库与应用程序链接,并且该应用程序被加载到IOS系统中;通过调用PC/SC驱动库能够实现IOS系统与应用程序进行通讯。
实施例1
本实施例提供一种PC/SC驱动库在IOS设备中的工作方法,如图1所示,具体包括:
步骤101:开始,PC/SC驱动库获取IOS系统中的外接设备信息,获取应用程序中预设的读卡器设备信息;
本实施例中,PC/SC驱动库获取IOS系统中的外接设备信息,具体包括:
PC/SC驱动库获取IOS系统中的ExternalAccessory.framework框架中的第一单例对象,通过第一单例对象的第一实例方法获取IOS系统中所有的外接设备信息,对获取到的外接设备信息进行枚举;
其中,第一单例对象为:EAAccessoryManager;第一实例方法为:connectedAccessories。外接设备信息包括:外接设备名称、厂商信息、型号、固件版本、硬件版本、外接设备配件协议信息;
本实施例中,应用程序中预设的读卡器设备信息具体为,读卡器配件协议信息。
例如:从IOS系统中获取到的外接设备信息为:
name:iR301;
manufacturer:FEITIAN
modelNumber:iR301
firmwareRevision:1.20.0
hardwareRevision:1.2.0
protocols:”com.ftsafe.iR301”;
即:外接设备名称为:iR301,厂商信息为:FEITIAN,型号为:iR301,固件版本为:1.20.0,硬件版本为:1.2.0,外接设备配件协议信息为:”com.ftsafe.iR301”;
应用程序中预设的读卡器设备信息为:
protocols:”com.ftsafe.iR301”;
protocols:”com.ftsafe.iR302”;
protocols:”com.ftsafe.iR303”;
即,应用程序中预设的读卡器设备信息中,包含的读卡器配件协议信息有:
”com.ftsafe.iR301”、”com.ftsafe.iR302”和”com.ftsafe.iR303”;
步骤102:PC/SC驱动库从外接设备信息中获取外接设备配件协议信息,从读卡器设备信息中获取读卡器配件协议信息;
具体地,PC/SC驱动库获取每一个外接设备信息中的外接设备配件协议信息,从读卡器设备信息中获取读卡器配件协议信息;
例如:PC/SC驱动库从外接设备信息中获取到的外接设备配件协议信息为:“com.ftsafe.iR301”;
从读卡器设备信息中获取到的读卡器配件协议信息为:“com.ftsafe.iR301”、“com.ftsafe.iR302”和“com.ftsafe.iR303”;
步骤103:PC/SC驱动库根据外接设备配件协议信息和读卡器配件协议信息,判断是否存在与应用程序中预设的读卡器设备信息匹配的外接设备与IOS系统连接,是则执行步骤104;否则执行步骤106;
具体地,PC/SC驱动库对外接设备配件协议信息进行判断,如果应用程序中预设的读卡器配件协议信息中包含外接设备配件协议信息,则存在与应用程序中预设的读卡器设备信息匹配的外接设备与IOS系统连接,执行步骤104;否则不存在与应用程序中预设的读卡器设备信息匹配的外接设备与IOS系统连接,执行步骤106;
例如:外接设备配件协议信息:“com.ftsafe.iR301”,存在于读卡器配件协议信息中;
步骤104:PC/SC驱动库将设备匹配标志置位,根据外接设备配件协议信息和读卡器配件协议信息获取相应的外接设备对象,执行步骤105;
例如:PC/SC驱动库将设备匹配标志置位,获取到的外接设备对象为EAAccesory-1。
步骤105:PC/SC驱动库根据外接设备对象和外接设备配件协议信息,对外接设备与IOS系统之间的通信通道进行初始化,获取通信通道对象,并保存相应的外接设备信息,执行步骤106;
具体地,PC/SC驱动库根据外接设备对象和外接设备配件协议信息,通过IOS系统提供的初始化通道接口对外接设备与IOS系统之间的通信通道进行初始化,获取通信通道对象,并保存相应的外接设备信息;通信通道对象为:EASession类的对象。
其中,IOS系统提供的接口为:initWithAcessory:(EAAccessory*)accessory forProtocol:(NSString*)protocol;
其中,accessory为已经配备的外接设备实例对象;protocol为匹配的外接设备的配件协议名称;
例如:PC/SC驱动库根据外接设备对象EAAccesory-1和外接设备配件协议信息“com.ftsafe.iR301”,通过IOS系统提供的接口initWithAcessory:(EAAccessory*)accessory forProtocol:(NSString*)protocol,对外接设备与IOS系统之间的通信通道进行初始化,获得已经初始化的通道EASession对象,利用已经初始化的EASession对象就可以获得outputStream和inputStream,并使用open方法打开,用于后续的读写数据。
步骤106:PC/SC驱动库判断是否已经向IOS系统注册中心注册第一通知,是则执行步骤108;否则执行步骤107;
本实施例中,第一通知为:实时监控外接设备插入通知和实时监控外接设备拔出通知;
其中,实时监控外接设备插入通知为:EAAccessoryDidConnectNotification,实时监控外接设备拔出通知为:EAAccessoryDidDisconnectNotification;
其中,向IOS系统中心注册第一通知的方法为-(void)addObserver:(id)observer selector:(SEL)aSelectorname:(NSString*)aName object:(id)anObject
其中observer为通知的监控者,即接收通知的一方;aSelector为通知的回调方法,并将通知对象当做参数传入;aName为通知的名称;anObject为通知的入参数。
第一通知的方法:由通知发布者anObject发布的通知名称aName对应通知,observer为向通知的监控者。
当PC/SC驱动库的SCardReleaseContext函数被调用的时,从IOS系统注册中心中移除第一通知。
其中,从IOS系统注册中心移除通知的方法为:-(void)removeObserver:(id)observer name:(NSString*)aNameobject:(id)anObject
其中observer为通知的监控者;name为被移除的通知的名称;anObject为通知的入参数。
步骤107:PC/SC驱动库向IOS系统注册中心注册第一通知,执行步骤108;
具体地,PC/SC驱动库向IOS系统注册中心注册实时监控外接设备插入通知和实时监控外接设备拔出通知;
本实施例中,PC/SC驱动库通过向IOS系统注册中心注册实时监控外接设备插入通知,并监听实时监控外接设备插入通知,获知有外接设备与IOS系统连接;
PC/SC驱动库通过向IOS系统注册中心注册实时监控外接设备拔出通知,并实时监控外接设备拔出通知,获知与IOS系统连接的外接设备断开。
步骤108:PC/SC驱动库根据设备匹配标志,判断是否存在与应用程序中预设的读卡器设备信息匹配的外接设备与IOS系统连接,是则执行步骤111;否则执行步骤109;
具体地,PC/SC驱动库判断设备匹配标志是否置位,如果置位,则存在与应用程序注册的读卡器设备信息匹配的外接设备和IOS系统连接,执行步骤111;如果未置位,则不存在与应用程序注册的读卡器设备信息匹配的外接设备和IOS系统连接,执行步骤109。
步骤109:PC/SC驱动库通过第一通知监听外接设备插入、拔出动作;
步骤110:当PC/SC驱动库通过第一通知检测到有外接设备插入或拔出时,将外接设备的外接设备信息发送给应用程序;
本实施例中,PC/SC驱动库通过执行步骤101至步骤110完成初始化操作,PC/SC驱动库将资源管理器上下文发送给应用程序,当PC/SC驱动库通过第一通知检测到有外接设备拔出时,还包括,将设备匹配标志复位。
具体地,PC/SC驱动库的第一函数被调用时,第一函数进行初始化操作,PC/SC驱动库生成资源管理器上下文,并保存资源管理器上下文,将资源管理器上下文发送给应用程序;
当PC/SC驱动库中的SCardReleaseContext、SCardListReaders、SCardConnect、SCardGetStatusChange函数被调用时,接收资源管理器上下文,执行相应操作;
其中,第一函数为:建立资源管理器上下文函数SCardEstablishContext;资源管理器上下文为:gContext;
当PC/SC驱动库的SCardReleaseContext接口被调用时,释放资源管理器上下文gContext。
步骤111:PC/SC驱动库从外接设备信息中获取第一信息,将第一信息报告给应用程序,执行步骤112;
具体地,PC/SC驱动库从外接设备信息中获取第一信息,将第一信息通过PC/SC驱动库的第一接口报告给应用程序,其中,第一信息,具体为:外接设备名称;第一接口为SCardListReaders;
例如:PC/SC驱动库从外接设备信息中获取到的外接设备名称为:iR301;将外接设备名称作为第一信息,将第一信息通过PC/SC驱动库的SCardListReaders接口报告给应用程序;
步骤112:PC/SC驱动库等待应用程序调用PC/SC驱动库提供的访问外接设备的指令接口;
本实施例中,PC/SC驱动库提供的访问外接设备的指令接口,包括但不限于查询卡槽状态指令接口、卡片上电指令接口、卡片下电指令接口、数据通讯指令接口。
其中,卡片上电指令接口为:SCardConnect接口,查询卡槽状态接口为:SCardStatus接口,卡片下电指令接口为:SCardDisconnect接口,数据通讯指令接口为SCardTransmit接口。
long SCardConnect(long hContext,const char*szReader,unsignedlong dwShareMode,unsigned long dwPreferredProtocols,long*phCard,unsigned long*pdwActiveProtocol);
long SCardStatus(long hCard,char*mszReaderNames,unsigned long*pcchReaderLen,unsigned long*pdwState,unsigned long*pdwProtocol,unsigned char*pbAtr,unsigned long*pcbAtrLen);
long SCardDisconnect(long hCard,unsigned long dwDisposition);
long SCardTransmit(long hCard,LPCSCARD_IO_REQUEST pioSendPci,
const unsigned char*pbSendBuffer,unsigned long cbSendLength,
LPSCARD_IO_REQUEST pioRecvPci,unsigned char*pbRecvBuffer,unsigned long*pcbRecvLength);
需要说明的是,利用PC/SC驱动库提供的卡片上电指令接口获取卡片句柄,将其作为查询卡槽状态接口,卡片下电指令接口,数据通讯指令接口的第一个入参参数;其中,卡片句柄为cardhandle;当查询卡槽状态接口、卡片下电指令接口、数据通讯指令接口的第一个入参参数为空的时候,PC/SC驱动库报错,即:
步骤a1:当PC/SC驱动库提供的卡片上电指令接口被应用程序调用时,判断第一个入参参数与已保存的资源管理器上下文是否匹配,是则执行步骤a2;否则报错,卡片上电指令接口函数结束。
步骤a2:判断第二个入参参数是否与已保存的外接设备信息中的第一信息匹配,是则将卡片句柄发送给应用程序,保存已上电的卡片信息,并将其与已保存的资源管理器上下文建立对应关系,卡片上电指令接口函数结束;否则报错,卡片上电指令接口函数结束。
当PC/SC驱动库提供的查询卡槽状态接口被应用程序调用时,判断是否已经获取到卡片句柄,是则执行步骤113;否则PC/SC驱动库报错。
步骤b1:当PC/SC驱动库提供的数据通讯指令接口被应用程序调用时,判断是否已经获取到卡片句柄,是则执行步骤b2;否则报错。
步骤b2:判断卡片句柄里的卡槽状态信息是否为有卡已上电,是则执行113;否则PC/SC驱动库报错,函数结束。
当PC/SC驱动库提供的卡片下电指令接口被应用程序调用时,判断是否已经获取到卡片句柄,是则执行步骤113;否则PC/SC驱动库报错。
当卡片下电指令接口被调用时,PC/SC驱动库释放卡片句柄,清空相应的卡片信息。
步骤113:PC/SC驱动库将封装的访问外接设备的指令通过通信通道对象发送给外接设备;
具体地,PC/SC驱动库将封装的访问外接设备的指令通过通信通道对象和IOS系统提供的接口发送给外接设备;
本实施例中,IOS系统提供的接口为:initWithAcessory:(EAAccessory*)accessory forProtocol:(NSString*)protocol
其中accessory代表已经配备的外接设备实例对象;protocol代表匹配的外接设备的配件协议名称;
通信通道对象为:EASession类的对象。
其中,PC/SC驱动库将封装的质量发送给外接设备使用的方法为:(NSInteger)write:(const uint8_t*)buffer maxLength:(NSUInteger)len.
其中,buffer代表即将要发送到外接设备的数据;len代表即将发送到外接设备的数据的长度;返回值代表成功发送给外接设备的数据长度。
其中,该方法归属的实例对象是NSOutputStream。
例如:
当PC/SC驱动库的SCardStatus接口接收到应用程序调用请求时,该接口生成符合CCID协议的查询卡槽状态指令0x65 00 00 00 00 00 01 00 00 00。
当PC/SC驱动库的SCardConnect接口接收到应用程序调用请求时,该接口生成符合CCID协议的上电指令0x62 00 00 00 00 0003 00 00 00。
当PC/SC驱动库的SCardDisconnect接口接收到应用程序调用请求时,该接口生成符合CCID协议的下电指令0x63 00 00 00 00 00 02 00 00 00。
当PC/SC驱动库的SCardTransmit接口接收到应用程序调用请求时,PC/SC驱动库获得应用程序传入的数据0x00 84 00 00 08,PC/SC驱动库使用CCID标准的指令头0x6f 05 00 00 00 0004 00 00 00对接收的数据进行封装,得到智能卡操作指令0x6f 05 00 00 00 0004 00 00 00 00 84 00 00 08。
PC/SC驱动库将封装的访问外接设备的指令通过通信通道对象和IOS系统提供的接口发送给外接设备。
步骤114:PC/SC驱动库接收外接设备返回的访问外接设备响应;
其中,驱动库接收外接设备返回的响应使用的方法为-(NSInteger)read:(uint8_t*)buffer maxLength:(NSUInteger)len。
其中,buffer代表从外接设备中获得的响应数据;len代表从外接设备中获得的响应数据的长度;返回值代表成功发送给外接设备的数据长度。
其中,该方法归属的实例对象是NSInputStream。
本实施例中,PC/SC驱动库接收外接设备通过通讯通道对象返回的访问外接设备响应;
PC/SC驱动库将访问外接设备指令通过通信通道对象和IOS系统提供的接口报告给IOS系统之后,IOS系统将访问外接设备指令报告给外接设备,IOS系统获取外接设备返回的数据,IOS系统将外接设备返回的数据作为访问外接设备响应,IOS系统将访问外接设备响应通过通讯通道对象发送给PC/SC驱动库。
例如:
PC/SC驱动库的SCardStatus接口生成查询卡槽状态指令0x65 00 00 00 0000 01 00 00 00,并通过通信通道对象和IOS系统提供的接口发送给外接设备,相应的,PC/SC驱动库接收到IOS系统通过通讯通道对象返回的查询卡槽状态响应,该查询卡槽状态响应为:0x81 00 00 00 00 00 01 01 00 01;从查询卡槽状态响应中获取卡槽状态,用其更新卡片信息里面的卡槽状态。
PC/SC驱动库的SCardConnect接口生成上电指令0x62 00 00 00 00 00 03 0000 00,并通过通信通道对象和IOS系统提供的接口发送给外接设备,相应的,PC/SC驱动库接收到IOS系统通过通讯通道对象返回的智能卡的ATR数据包,该智能卡的ATR数据包为:0x80 0f 00 00 00 00 03 00 00 003b7a2100004a434f50343156323231;
PC/SC驱动库的SCardDisconnect接口生成下电指令0x63 00 00 00 00 00 0200 00 00,并通过通信通道对象和IOS系统提供的接口发送给外接设备,相应的,PC/SC驱动库接收到IOS系统通过通讯通道对象返回的下电指令响应,该下电指令响应为:0x81 00 00 00 00 00 02 01 00 00;
PC/SC驱动库SCardTransmit接口封装得到智能卡操作指令0x6f 05 00 00 0000 04 00 00 00 00 84 00 00 08,并通过通信通道对象和IOS系统提供的接口发送给外接设备,相应的,PC/SC驱动库接收到IOS系统通过通讯通道对象返回的智能卡操作响应为0x80 0a 00 00 00 00 04 00 00 00e6a3ab731cb0809000;
步骤115:PC/SC驱动库将访问外接设备响应发送给应用程序,结束;
具体地,PC/SC驱动库通过PC/SC驱动库提供的接口将访问外接设备响应发送给应用程序。
例如:当PC/SC驱动库接收到IOS系统通过通讯通道对象返回的查询卡槽状态的响应0x81 00 00 00 00 00 01 01 00 01时;PC/SC驱动库通过PC/SC驱动库提供的SCardStatus接口,将该响应传送给应用程序;
当PC/SC驱动库接收到IOS系统通过通讯通道对象返回的智能卡的ATR数据包0x80 0f 00 00 00 00 03 00 00 00 3b7a2100004a434f50343156323231时,判断标准的CCID 10个字节头是否符合标准,如果符合标准,则获取第10个字节之后的部分,即:3b7a2100004a434f50343156323231,并将获取到的数据通过PC/SC驱动库的SCardConnect接口传送给应用程序;
当PC/SC驱动库接收到IOS系统通过通讯通道对象返回的下电响应0x81 0000 00 00 00 02 01 00 00时,判断下电响应中标准CCID的协议头是否正确,如果正确,则通过PC/SC驱动库的SCardDisconnect接口将下电响应传送给应用程序;
当PC/SC驱动库接收到IOS系统通过通讯通道对象返回的响应0x80 0a 00 0000 00 04 00 00 00e6a3ab731cb0809000时,获取第10个字节以后的部分,即:e6a3ab731cb0809000,PC/SC驱动库通过PC/SC驱动库的接口SCardTransmit将获取到的数据传送给应用程序。
需要说明的是,还可以通过调用SCardEstablishContext函数获取资源管理器上下文,将其作为SCardListReaders的第一个参数,然后执行步骤101,通过这种方式同样可以实现本发明目的,能够得到本发明的有益效果。
实施例2
本实施例提供一种查询卡槽状态的方法,具体为在实施例1中,PC/SC驱动库判断是否已经向IOS系统注册中心注册第一通知的同时,还包括:PC/SC驱动库启动查询卡槽状态线程,进行查询卡槽状态的操作;
具体操作如图3所示,包括:
步骤201:PC/SC驱动库初始化卡槽状态标识;
本实施例中,PC/SC驱动库将卡槽状态标识初始化为0x00;
步骤202:PC/SC驱动库根据外接设备配件协议信息和读卡器配件协议信息,判断是否存在与应用程序中预设的读卡器配件协议匹配的外接设备与IOS系统连接,是则执行步骤204;否则执行步骤203;
步骤203:PC/SC驱动库休眠,预设时间后再唤醒,返回步骤202;
优选的,预设时间为1S。
步骤204:PC/SC驱动库判断应用程序是否设置PC/SC驱动库提供的委派函数,是则执行步骤205;否则执行步骤203;
其中,PC/SC驱动库提供的委派函数为:
protocol ReaderInterfaceDelegate<NSObject>
required
-(void)cardInterfaceDidDetach:(BOOL)attached
end
步骤205:PC/SC驱动库休眠,预设时间后再唤醒,执行步骤206;
步骤206:PC/SC驱动库向IOS系统发送查询卡槽状态指令;
具体地,PC/SC驱动库通过PC/SC驱动库的SCardStatus接口向IOS系统发送查询卡槽状态指令;
本实施例中,PC/SC驱动库通过PC/SC驱动库的SCardStatus接口向IOS系统发送查询卡槽状态指令之后,IOS系统将接收到的查询卡槽状态指令发送给外接设备;
例如:PC/SC驱动库封装生成符合CCID协议的查询卡槽状态指令0x65 00 0000 00 00 01 00 00 00,并通过SCardStatus接口将其发送给IOS系统。
步骤207:PC/SC驱动库接收IOS系统返回的卡槽状态响应;
本实施例中,PC/SC驱动库通过PC/SC驱动库的SCardStatus接口向IOS系统发送查询卡槽状态指令之后,IOS系统将接收到的查询卡槽状态指令发送给外接设备,IOS系统获取外接设备返回的卡槽状态响应,并将卡槽状态响应发送给PC/SC驱动库;
其中,卡槽状态响应的第八个字节上的低四位表示卡槽状态信息。
例如:卡槽状态响应为:0x81 00 00 00 00 00 01 01 00 01;第八个字节的低四位是0001。
步骤208:PC/SC驱动库根据卡槽状态响应和卡槽状态标识,判断卡槽状态是否发生改变,是则执行步骤209;否则返回步骤202;
具体地,PC/SC驱动库获取卡槽状态响应的第八个字节上数据,将第八字节上数据中的低四位数据作为卡槽状态信息,判断卡槽状态信息和卡槽状态标识是否相同,如果相同,则卡槽状态未发生改变,执行步骤209,如果不相同,则卡槽状态改变,返回步骤202;
例如:卡槽状态标识为0001,与卡槽状态信息为0001相同,卡槽状态未发生改变;
步骤209:PC/SC驱动库根据卡槽状态响应设置卡槽状态标识,执行步骤210;
本实施例中,如果卡槽状态响应为有卡已上电,则将卡槽状态标识置为0001;
如果卡槽状态响应为有卡未上电,则将卡槽状态标识置为0001;
如果卡槽状态响应为无卡,则将卡槽状态标识置为0010;
步骤210:PC/SC驱动库判断应用程序是否设置PC/SC驱动库提供的委派函数,是则执行步骤211;否则返回步骤202;
步骤211:PC/SC驱动库通过委派函数向应用程序发送卡槽状态变化信息。
本步骤还可以为,PC/SC驱动库通过委派函数向应用程序发送卡槽状态响应。
本实施例中,PC/SC驱动库判断是否已经向IOS系统注册中心注册第一通知的同时,启动查询卡槽状态线程,循环进行查询卡槽状态操作,直到PC/SC驱动库释放资源管理器上下文句柄时结束,当PC/SC驱动库的释放资源函数被调用时,释放资源管理器上下文句柄,其中释放资源函数为SCardReleaseContext。
实施例3
本实施例提供一种查询卡槽状态的方法,具体为在实施例1中,PC/SC驱动库判断是否已经向IOS系统注册中心注册第一通知的同时,还包括:PC/SC驱动库启动查询卡槽状态线程,循环进行查询卡槽状态的操作,直到PC/SC驱动库释放资源管理器上下文句柄时结束;
其中查询卡槽状态的操作,具体包括:
步骤301-1:PC/SC驱动库初始化卡槽状态标识;
本实施例中,PC/SC驱动库将卡槽状态标识初始化为0x00;
步骤301-2:PC/SC驱动库根据外接设备配件协议信息和读卡器配件协议信息,判断是否存在与应用程序注册的读卡器配件协议匹配的外接设备,是则执行步骤301-4;否则执行步骤301-3;
步骤301-3:PC/SC驱动库休眠,预设时间后再唤醒,返回步骤301-2;
优选的,预设时间为1S。
步骤301-4:PC/SC驱动库向IOS系统发送查询卡槽状态指令,执行步骤301-5;
具体地,当PC/SC驱动库的SCardStatus接口被调用时,向IOS系统发送查询卡槽状态指令;
本实施例中,当PC/SC驱动库的SCardStatus接口被调用时,向IOS系统发送查询卡槽状态指令之后,IOS系统将接收到的查询卡槽状态指令发送给外接设备;
步骤301-5:PC/SC驱动库接收IOS系统返回的卡槽状态响应,根据卡槽状态响应设置卡槽状态标识,查询卡槽状态操作结束。
本实施例中,PC/SC驱动库通过PC/SC驱动库的SCardStatus接口向IOS系统发送查询卡槽状态指令之后,IOS系统将接收到的查询卡槽状态指令发送给外接设备,IOS系统获取外接设备返回的卡槽状态响应,并将卡槽状态响应发送给PC/SC驱动库;
其中,卡槽状态响应的第八个字节上的低四位表示卡槽状态信息。
本实施例中,如果卡槽状态响应为有卡已上电,则将卡槽状态标识置为0000;
如果卡槽状态响应为有卡未上电,则将卡槽状态标识置为0001;
如果卡槽状态响应为无卡,则将卡槽状态标识置为0010;
在PC/SC驱动库从外接设备信息中获取第一信息,将第一信息报告给应用程序之后,还包括,等待应用程序调用PC/SC驱动库第二接口,其中,第二接口为ScardGetStatusChange接口函数;
当PC/SC驱动库的第二接口被调用时,执行以下操作,包括:
步骤301:当PC/SC驱动库的第二接口被调用时,PC/SC驱动库判断设备匹配标志是否置位,是则执行步骤302;否则退出第二接口;
其中,第二接口为:ScardGetStatusChange函数;
步骤302:PC/SC驱动库初始化计时标识;
具体地,PC/SC驱动库将计时标识初始化为0;
步骤303:PC/SC驱动库的第二接口判断外部传入的智能卡状态参数是否与PC/SC驱动库中保存的卡槽状态标识相同,是则执行步骤305;否则执行步骤304;
步骤304:PC/SC驱动返回卡槽状态变化信息,退出第二接口;
步骤305:PC/SC驱动库判断是否需要计算超时,是则执行步骤306;否则执行步骤303;
步骤306:PC/SC驱动库根据计时标识和外部传入的超时时间参数,判断是否超时,是则退出第二接口;否则执行步骤307;
步骤307:PC/SC驱动库休眠,预设时间后再唤醒,更新计时标识,返回步骤303。
需要说明的是,本发明实施例1中,PC/SC驱动库接收到的应用程序调用PC/SC驱动库通过发送指令访问外接设备的接口中,还包括:查询卡槽状态指令接口SCardStatus;
如果是查询卡槽状态指令接口时,PC/SC驱动库通过标注的CCID规范指令获取卡槽状态信息,保存到卡槽状态标识中,根据卡槽状态标识的取值组织卡槽状态响应,向应用程序发送卡槽状态响应,结束;
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (15)
1.一种PC/SC驱动库在IOS设备中的工作方法,其特征在于,包括:
步骤S1:PC/SC驱动库从IOS系统中的外接设备信息中获取外接设备配件协议信息,从应用程序中预设的读卡器设备信息中获取读卡器配件协议信息;
步骤S2:所述PC/SC驱动库根据所述外接设备配件协议信息和所述读卡器配件协议信息,判断是否存在与所述读卡器设备信息匹配的外接设备与所述IOS系统连接,是则执行步骤S3;否则执行步骤S5;
步骤S3:所述PC/SC驱动库将设备匹配标志置位,根据所述外接设备配件协议信息和所述读卡器配件协议信息获取相应的外接设备对象,执行步骤S4;
步骤S4:所述PC/SC驱动库根据所述外接设备对象和所述外接设备配件协议信息,对所述外接设备与所述IOS系统之间的通信通道进行初始化,获取通信通道对象,并保存相应的外接设备信息,执行步骤S5;
步骤S5:所述PC/SC驱动库判断是否已经向IOS系统注册中心注册第一通知,是则执行步骤S6;否则所述PC/SC驱动库向所述IOS系统注册中心注册第一通知,执行步骤S6;
步骤S6:所述PC/SC驱动库根据所述设备匹配标志,判断是否存在与所述读卡器设备信息匹配的外接设备与所述IOS系统连接,是则执行步骤S8;否则执行步骤S7;
步骤S7:所述PC/SC驱动库通过所述第一通知检测外接设备插入或拔出,将所述外接设备的外接设备信息发送给所述应用程序,结束;
其中,当所述PC/SC驱动库通过所述第一通知检测外接设备拔出时,还包括,将所述设备匹配标志复位;
步骤S8:所述PC/SC驱动库从所述外接设备信息中获取第一信息,将所述第一信息报告给所述应用程序;
当所述PC/SC驱动库提供的访问外接设备的指令接口被调用时,判断接收到的参数是否合法,是则执行步骤W1;否则向应用程序发送参数不合法信息,结束;
步骤W1:根据所述接收到的参数封装访问外部设备指令,将封装的访问外接设备的指令通过所述通信通道对象发送给所述外接设备;
步骤W2:接收所述外接设备返回的访问外接设备响应,将所述访问外接设备响应发送给所述应用程序,结束。
2.如权利要求1所述的方法,其特征在于,所述步骤S2,具体包括:
步骤S2-1:所述PC/SC驱动库对所述外接设备配件协议信息进行判断,如果所述读卡器配件协议信息中包含所述外接设备配件协议信息,则执行步骤S3;否则执行步骤S5。
3.如权利要求1所述的方法,其特征在于,所述步骤S1,具体包括:
PC/SC驱动库获取IOS系统中的ExternalAccessory.framework框架中的第一单例对象,通过所述第一单例对象的第一实例方法获取IOS系统中的外接设备信息,对获取到的外接设备信息进行枚举,从所述外接设备信息中获取外接设备配件协议信息;获取应用程序已经注册的读卡器设备信息,从所述读卡器设备信息中获取读卡器配件协议信息。
4.如权利要求1所述的方法,其特征在于,所述步骤S6,具体包括:
所述PC/SC驱动库判断所述设备匹配标志是否置位,是则存在与所述读卡器设备信息匹配的外接设备与所述IOS系统连接,执行步骤S8;否则不存在与所述读卡器设备信息匹配的外接设备与所述IOS系统连接,执行步骤S7。
5.如权利要求1所述的方法,其特征在于,所述步骤S8,具体包括:
所述PC/SC驱动库从所述外接设备信息中获取第一信息,保存所述外接设备信息,将所述第一信息通过所述PC/SC驱动库的第一接口报告给所述应用程序。
6.如权利按要求1所述的方法,其特征在于,所述PC/SC驱动库将封装的访问外接设备的指令通过所述通信通道对象发送给所述外接设备,具体包括:
所述PC/SC驱动库将封装的访问外接设备的指令通过所述通信通道对象和所述IOS系统提供的接口发送给所述外接设备。
7.如权利要求1所述的方法,其特征在于,所述步骤S4之后,还包括:
步骤A1:所述PC/SC驱动库初始化卡槽状态标识;
步骤A2:所述PC/SC驱动库根据所述外接设备配件协议信息和所述读卡器配件协议信息,判断是否存在与所述读卡器配件协议匹配的外接设备,是则执行步骤A4;否则执行步骤A3;
步骤A3:所述PC/SC驱动库休眠,预设时间后再唤醒,返回步骤A2;
步骤A4:所述PC/SC驱动库判断所述应用程序是否设置PC/SC驱动库提供的委派函数,是则执行步骤A5;否则执行步骤A3;
步骤A5:所述PC/SC驱动库休眠,预设时间后再唤醒,向所述IOS系统发送查询卡槽状态指令;
步骤A6:所述PC/SC驱动库接收所述IOS系统返回的卡槽状态响应,根据所述卡槽状态响应和所述卡槽状态标识,判断卡槽状态是否发生改变,是则执行步骤A7;否则返回步骤A2;
步骤A7:所述PC/SC驱动库根据所述卡槽状态响应设置卡槽状态标识,判断所述应用程序是否设置所述PC/SC驱动库提供的委派函数,是则执行步骤A8;否则返回步骤A2;
步骤A8:所述PC/SC驱动库通过委派函数向所述应用程序发送卡槽状态变化信息。
8.如权利要求1所述的方法,其特征在于,所述步骤S4之后,还包括:
所述PC/SC驱动库启动查询卡槽状态线程,循环进行查询卡槽状态的操作,直到所述PC/SC驱动库释放第一句柄时结束;
当所述PC/SC驱动库的释放资源函数被调用时,释放所述第一句柄。
9.如权利要求8所述的方法,其特征在于,所述查询卡槽状态的操作,具体包括:
步骤B1:所述PC/SC驱动库初始化卡槽状态标识;
步骤B2:所述PC/SC驱动库根据所述外接设备配件协议信息和所述读卡器配件协议信息,判断是否存在与所述读卡器配件协议匹配的外接设备,是则执行步骤B4;否则执行步骤B3;
步骤B3:所述PC/SC驱动库休眠,预设时间后再唤醒,返回步骤B2;
步骤B4:所述PC/SC驱动库向所述IOS系统发送查询卡槽状态指令,执行步骤B5;
步骤B5:所述PC/SC驱动库接收所述IOS系统返回的卡槽状态响应,根据所述卡槽状态响应设置卡槽状态标识。
10.如权利要求1所述的方法,其特征在于,所述步骤S8之后,还包括:
步骤C1:当所述PC/SC驱动库的第二接口被调用时,判断所述设备匹配标志是否置位,是则执行步骤C2;否则退出所述第二接口;
步骤C2:所述PC/SC驱动库初始化计时标识;
步骤C3:所述PC/SC驱动库的第二接口判断外部传入的智能卡状态参数是否与所述PC/SC驱动库中保存的卡槽状态标识相同,是则执行步骤C5;否则执行步骤C4;
步骤C4:所述PC/SC驱动返回卡槽状态变化信息,退出所述第二接口;
步骤C5:所述PC/SC驱动库判断是否需要计算超时,是则执行步骤C6;否则执行步骤C3;
步骤C6:所述PC/SC驱动库根据所述计时标识和外部传入的超时时间参数,判断是否超时,是则退出所述第二接口;否则执行步骤C7;
步骤C7:所述PC/SC驱动库休眠,预设时间后再唤醒,更新所述计时标识,返回步骤C3。
11.如权利要求1所述的方法,其特征在于,所述PC/SC驱动库根据所述外接设备对象和所述外接设备配件协议信息,对所述外接设备与所述IOS系统之间的通信通道进行初始化,具体包括:
所述PC/SC驱动库根据外接设备对象和所述外接设备配件协议信息,通过所述IOS系统提供的初始化通道接口,对所述外接设备与所述IOS系统之间的通信通道进行初始化。
12.如权利要求1所述的方法,其特征在于,所述第一通知,具体为:
实时监控外接设备插入通知和实时监控外接设备拔出通知;
所述PC/SC驱动库向所述IOS系统注册中心注册第一通知,具体为:
所述PC/SC驱动库通过执行包含通知的监控者、通知的回调方法、通知的名称以及通知的入参参数的注册第一通知的方法,向所述IOS系统注册中心注册第一通知;
当所述PC/SC驱动库的释放资源函数被调用的时,从所述IOS系统注册中心中移除所述第一通知。
13.如权利要求1所述的方法,其特征在于,
所述步骤S8中,还包括,当所述PC/SC驱动库的第一函数被调用时,PC/SC驱动库对所述第一函数进行初始化操作,生成并保存资源管理器上下文,将所述资源管理器上下文发送给所述应用程序。
14.如权利要求13所述的方法,其特征在于,所述PC/SC驱动库提供的接口,包括:卡片上电指令接口、卡片下电指令接口、查询卡槽状态指令接口、数据通讯指令接口;
当所述PC/SC驱动库提供的卡片上电指令接口被调用时,判断第一个入参参数与已保存的资源管理器上下文是否匹配,是则执行步骤a;否则报错;
步骤a:判断第二个入参参数是否与已保存的外接设备信息中的第一信息匹配,是则将所述卡片句柄发送给应用程序,保存已上电的卡片信息,并将其与已保存的资源管理器上下文建立对应关系;否则报错;
当PC/SC驱动库提供的查询卡槽状态接口被应用程序调用时,判断是否已经获取到卡片句柄,是则根据所述接收到的参数封装查询卡槽状态指令,将封装的查询卡槽状态指令通过所述通信通道对象发送给所述外接设备,接收所述外接设备返回的查询卡槽状态响应,用所述查询卡槽状态响应中的卡槽状态更新卡片信息里面的卡槽状态,将所述查询卡槽状态响应发送给所述应用程序;否则报错;
当所述PC/SC驱动库提供的数据通讯指令接口被调用时,判断是否已经获取到卡片句柄,并且所述卡片句柄里的卡槽状态信息是有卡已上电,是则根据所述接收到的参数封装智能卡操作指令,将封装的智能卡操作指令通过所述通信通道对象发送给所述外接设备,接收所述外接设备返回的智能卡操作响应,将所述智能卡操作响应发送给所述应用程序;否则报错;
当所述PC/SC驱动库提供的卡片下电指令接口被调用时,判断是否获取到卡片句柄,是则封装下电指令,并将封装的下电指令通过所述通信通道对象发送给所述外接设备,接收所述外接设备返回的下电响应,将所述下电响应发送给所述应用程序,释放卡片句柄,清空相应的卡片信息;否则报错。
15.如权利要求14所述的方法,其特征在于,所述方法还包括:当所述PC/SC驱动库的释放资源函数被调用时,释放所述资源管理器上下文。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510176569.8A CN104750630B (zh) | 2015-04-14 | 2015-04-14 | 一种pc/sc驱动库在ios设备中的工作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510176569.8A CN104750630B (zh) | 2015-04-14 | 2015-04-14 | 一种pc/sc驱动库在ios设备中的工作方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104750630A true CN104750630A (zh) | 2015-07-01 |
CN104750630B CN104750630B (zh) | 2017-09-22 |
Family
ID=53590351
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510176569.8A Active CN104750630B (zh) | 2015-04-14 | 2015-04-14 | 一种pc/sc驱动库在ios设备中的工作方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104750630B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106250750A (zh) * | 2016-07-18 | 2016-12-21 | 深圳市文鼎创数据科技有限公司 | 基于MacOSX系统的USB设备接入方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1418349A (zh) * | 2000-03-15 | 2003-05-14 | 施蓝姆伯格系统公司 | 在智能卡和主站之间通信的方法 |
CN101266590A (zh) * | 2008-04-22 | 2008-09-17 | 北京飞天诚信科技有限公司 | 动态切换设备配置的方法和系统 |
EP2306264A2 (en) * | 2008-05-26 | 2011-04-06 | SK Telecom. Co., Ltd. | Memory card supplemented with wireless communication module, terminal for using same, memory card including wpan communication module, and wpan communication method using same |
WO2011050740A1 (zh) * | 2009-10-30 | 2011-05-05 | 北京飞天诚信科技有限公司 | 多卡座读卡器的识别方法及其与主机的通信方法和系统 |
CN202142082U (zh) * | 2011-07-25 | 2012-02-08 | 北京集联网络技术有限公司 | 一种金融ic卡读写器 |
-
2015
- 2015-04-14 CN CN201510176569.8A patent/CN104750630B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1418349A (zh) * | 2000-03-15 | 2003-05-14 | 施蓝姆伯格系统公司 | 在智能卡和主站之间通信的方法 |
CN101266590A (zh) * | 2008-04-22 | 2008-09-17 | 北京飞天诚信科技有限公司 | 动态切换设备配置的方法和系统 |
EP2306264A2 (en) * | 2008-05-26 | 2011-04-06 | SK Telecom. Co., Ltd. | Memory card supplemented with wireless communication module, terminal for using same, memory card including wpan communication module, and wpan communication method using same |
WO2011050740A1 (zh) * | 2009-10-30 | 2011-05-05 | 北京飞天诚信科技有限公司 | 多卡座读卡器的识别方法及其与主机的通信方法和系统 |
CN202142082U (zh) * | 2011-07-25 | 2012-02-08 | 北京集联网络技术有限公司 | 一种金融ic卡读写器 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106250750A (zh) * | 2016-07-18 | 2016-12-21 | 深圳市文鼎创数据科技有限公司 | 基于MacOSX系统的USB设备接入方法及装置 |
CN106250750B (zh) * | 2016-07-18 | 2019-08-16 | 深圳市文鼎创数据科技有限公司 | 基于MacOSX系统的USB设备接入方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104750630B (zh) | 2017-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101355577B (zh) | 一种多线程通讯程序中防止线程吊死的方法 | |
CN106658756B (zh) | 一种终端设备与热点连接的识别方法及装置 | |
CN107926075A (zh) | 支持异构环境下的数据通信的系统和方法 | |
EP3007066A1 (en) | Method for using shared device in apparatus capable of operating two operating systems | |
CN105592403B (zh) | 一种基于nfc的通信装置和方法 | |
CN106547634A (zh) | 一种跨进程通信的方法及装置 | |
CN109981360B (zh) | 物联网设备站点开通方法、装置、系统及存储介质 | |
CN103326749B (zh) | 一种nfc射频通信的控制方法、装置及系统 | |
CN105188023A (zh) | 一种蓝牙通讯方法和通讯装置 | |
CN103914713B (zh) | 一种改变智能卡应用类型的方法、智能终端、服务平台与系统 | |
CN104469665A (zh) | 一种数据处理方法以及用户端 | |
CN106031050A (zh) | 一种信息处理方法及nfc终端 | |
US20120144080A1 (en) | Method and Device for Monitoring Running State of Card | |
CN104915252B (zh) | 一种进程端口管理装置及方法 | |
CN109067645B (zh) | 一种与nfv虚拟安全网关相连的网元设备 | |
CN101719212B (zh) | 串口读卡器的识别方法和装置 | |
US20170273120A1 (en) | Method for Establishing Network Connection by Using WPS, and Mobile Wi-Fi Device | |
CN104750630A (zh) | 一种pc/sc驱动库在ios设备中的工作方法 | |
CN106534342A (zh) | 连接控制方法、主机及系统 | |
CN106445516B (zh) | 外置无线网卡驱动加载方法及装置 | |
CN112399446A (zh) | 边缘网关通信方法、装置、计算机设备和存储介质 | |
CN106954281A (zh) | 一种wifi连接方法及装置 | |
CN105678152A (zh) | 一种与智能密钥设备通讯的方法及装置 | |
CN112333144B (zh) | 一种通讯模组的数据安全系统及方法 | |
CN102609660A (zh) | 一种计算机视频设备隐私保护方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |