本发明涉及atm操作系统技术领域,特别是涉及一种linux操作系统(包括国产linux操作系统)实现方法、atm及存储介质。
背景技术:
atmc(即atmcontrol),是终端交易渠道最底层的终端设备控制系统,运行于终端设备,主要用于向持卡人和atm设备管理员提供各种交易和管理的交互界面,并与atmp通过报文交互实现特定的功能。
atm是automatictellermachine的缩写,意思是atm,因大部分用于取款,又称自动取款机。atm是一种高度精密的机电一体化装置,利用磁性代码卡或智能卡实现金融交易的自助服务,代替银行柜面人员的工作。可提取现金、查询存款余额、进行账户之间资金划拨、余额查询等工作;还可以进行现金存款(实时入账)、支票存款(国内无)、存折补登、中间业务等工作。持卡人可以使用信用卡或储蓄卡,根据密码办理自动取款、查询余额、转账、现金存款、存折补登、购买基金、更改密码及缴纳手机话费等业务。
cen/xfs标准为基于windows的应用提供对金融设备的访问,但银行解决方案供应商协会的初衷只是提供金融机构特有的外围设备的访问。
cen/xfs标准的关键要素在于api和对应spi的定义,让xfsmananger(即xfs管理器)用来与sp通信,和对sp一系列的支持。在xfs的实现中,这些要素组合起来,为基于windows的应用提供对金融外设的访问。
针对国产linux操作系统,国内行业参与方参考cen/xfs标准,制定了金融外设接口标准c/xfs(chinaextensionsforfinancialservices),大家习惯把c/xfs称之为lfs。
多年来许多专家一直在警告,windows操作系统对于银行业务来说其实不够安全,比如无询问的强制自动升级更新,随时可远程监控甚至窃取信息等等;所以如何实现能够适用于atm的基于xfs标准的其他操作系统,提高atm的运行安全性成为了亟待解决的技术问题。
因此,现有技术还有待改进。
技术实现要素:
基于此,有必要针对上述技术问题,提供一种linux操作系统实现方法、atm及存储介质,旨在实现能够适用于atm的基于xfs标准的其他操作系统,提高atm的运行安全性(针对lfs标准与此xfs标准方案保持一致)。
本发明的技术方案如下:
一种linux操作系统实现方法,其中,linux操作系统配置有xfs子系统,所述linux操作系统实现方法包括:
从用于在atm中运行的windows操作系统注册表中导出配置信息;
在linux操作系统中创建文本文件,并将所导出的配置信息存储于所述文本文件,所述文本文件的格式与windows操作系统注册表中存储配置信息的文件格式相同;
在linux操作系统中创建以下函数:
句柄创建函数,用于被ap层调用后创建发送消息及接收消息的句柄;
消息发送函数:用于被sp层调用后将指令消息发送至xfs管理器;
消息获取函数:用于被ap层调用后从xfs管理器获取所述指令消息;
句柄销毁函数:用于被ap层调用后销毁句柄创建函数所创建的句柄。
在进一步地优选方案中,所述linux操作系统中的接口、事件、数据结构及配置文件格式符合xfs标准。
在进一步地优选方案中,所述xfs子系统提供有用于供ap层及sp层调用的动态链接库,所述动态链接库存储于/user/lib目录下。
在进一步地优选方案中,所述配置信息具体存储于/etc/xfs/xfs.conf。
在进一步地优选方案中,句柄创建函数具体为wfmcreatehwnd,消息发送函数具体为wfmpostmessage,消息获取函数具体为wfmgetmessage,句柄销毁函数具体为wfmdestroyhwnd。
一种atm,其运行有linux操作系统,所述linux操作系统配置有xfs子系统,并创建有文本文件,所述文本文件存储有从用于在atm中运行的windows操作系统注册表中导出的配置信息,且文本文件的格式与windows操作系统注册表中存储配置信息的文件格式相同;
所述linux操作系统创建有以下函数:
句柄创建函数,用于被ap层调用后创建发送消息及接收消息的句柄;
消息发送函数:用于被sp层调用后将指令消息发送至xfs管理器;
消息获取函数:用于被ap层调用后从xfs管理器获取所述指令消息;
句柄销毁函数:用于被ap层调用后销毁句柄创建函数所创建的句柄。
在进一步地优选方案中,所述linux操作系统中的接口、事件、数据结构及配置文件格式符合xfs标准。
在进一步地优选方案中,所述xfs子系统提供有用于供ap层及sp层调用的动态链接库,所述动态链接库存储于/user/lib目录下。
在进一步地优选方案中,所述配置信息具体存储于/etc/xfs/xfs.conf。
一种存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如上任一项所述的linux操作系统实现方法的步骤。
与现有技术相比,本发明提供的linux操作系统实现方法,linux操作系统配置有xfs子系统,该方法包括:从用于在atm中运行的windows操作系统注册表中导出配置信息;在linux操作系统中创建文本文件,并将所导出的配置信息存储于所述文本文件,所述文本文件的格式与windows操作系统注册表中存储配置信息的文件格式相同;在linux操作系统中创建以下函数:句柄创建函数,用于被ap层调用后创建发送消息及接收消息的句柄;消息发送函数:用于被sp层调用后将指令消息发送至xfs管理器;消息获取函数:用于被ap层调用后从xfs管理器获取所述指令消息;句柄销毁函数:用于被ap层调用后销毁句柄创建函数所创建的句柄。基于此,本发明所提供的linux操作系统实现方法,通过增加的函数及存储配置信息的文本文件,实现了消息的循环,使得各厂商可以不必修改api和spi接口,快速开发sp,以在linux操作系统中实现多种多样的服务,提高了atm的运行安全性。
附图说明
图1是本发明优选实施例中linux操作系统实现方法的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供了一种linux操作系统实现方法,linux操作系统配置有xfs子系统,如图1所示,所述linux操作系统实现方法包括:
s100、从用于在atm中运行的windows操作系统注册表中导出配置信息。
如何利用以往的资源,减少开发成本及时间,对于快速实现linux操作系统的实现,以及sp的快速开发具有重要意义。linux操作系统不支持注册表,所以配置信息存取方式必须修改,本发明从windows操作系统注册表中导出已基本完善的配置信息,并在linux操作系统中实现所述配置信息的利用,即可实现上述效果,具体操作步骤如s200所述。
s200、在linux操作系统中创建文本文件,并将所导出的配置信息存储于所述文本文件,所述文本文件的格式与windows操作系统注册表中存储配置信息的文件格式相同。
在具体实施时,在linux操作系统中,配置信息存储在/etc/xfs/xfs.conf中,这个文件的格式和从windows注册表中导出的文件格式一致。
在windows操作系统中,配置信息存取方式和以前一样。在linux操作系统中,配置信息存储在一个文本文件中,文本文件的格式和windows注册表导出的格式一致,xfsmanager需要实现存取函数,以供sp和应用层调用;配置示例如下:
(1)[hkey_users\.default\xfs\logical_services\mycardreader]
"class"="idc"
"provider"="myidc"
(2)[hkey_users\.default\xfs\logical_services\myjournalprinter]
"class"="ptr"
"provider"="myjptr"
(3)[hkey_users\.default\xfs\logical_services\mypassbookprinter]
"class"="ptr"
"provider"="mypptr"
(4)[hkey_users\.default\xfs\logical_services\mypinpad]
"class"="pin"
"provider"="mypin"
在具体实施时,在linux操作系统中遵循xfs标准中定义的接口、事件、数据结构和配置文件格式,xfsmanager提供三个动态链接库(libxfs.so,libxfs_supp.so,libxfs_conf.so)给应用层和sp层调用,这三个文件位于/user/lib目录下。
在windows操作系统中,通常使用windows窗口消息来把消息从sp层推送到应用层(即ap层),但是windows窗口消息在其他操作系统中不适用,为了解决这个问题,本发明规范了事件推送方式:增加四个用来提供消息循环功能的函数,同时,为了保证向后兼容性,在windows操作系统中,消息推送机制和以前一样,在其他操作系统中,提供了四个函数,用来实现消息循环。在windows操作系统中,sp可以和以前一样使用windows窗口消息循环系统,也可以实现新的函数。在其他操作系统中,xfsmanager必须实现这四个新的函数并且提供给sp和应用层调用;优选窗口句柄(hwnd)应该是wfmcreatehwnd的返回值。
因此,本发明提供的linux操作系统实现方法还包括:
s300、在linux操作系统中创建以下函数:
句柄创建函数,用于被ap层调用后创建发送消息及接收消息的句柄;
消息发送函数:用于被sp层调用后将指令消息发送至xfs管理器;
消息获取函数:用于被ap层调用后从xfs管理器获取所述指令消息;
句柄销毁函数:用于被ap层调用后销毁句柄创建函数所创建的句柄。
在具体实施时,所述句柄创建函数具体为wfmcreatehwnd,具体说明如下:
hresult(函数返回值):若该函数是执行完返回的话将包含具有实际意义的数据,若立即返回则包含状态信息--发送成功与否,并不能说明执行的如何;
parameters(参数):指向窗口句柄的指针(输出参数);
comments(注解):这个函数通常被想要从xfsmanager中获得消息的应用层调用;xfsmanager应该实现消息循环,当窗口句柄被创建时,可以被用来发送和接收消息,当窗口句柄不再被使用时,应该通过调用wfsdestroyhwnd来销毁;
errorcodes(错误代码):ifthefunctionreturnisnotwfs_success,itisoneofthefollowingerrorconditions:wfs_err_no_messageloopxfsmanager没有实现消息循环系统。
所述消息发送函数具体为wfmpostmessage,具体说明如下:
hresult(函数返回值):wfmpostmessage(hwnd,unmsg,wparam,lparam,dwtimeout),将消息发送给消息循环系统,通过调用wfsgetmessage,用户可以从消息循环系统中获得该消息;
parameters(参数):(1)hwnd/hwnd:通过wfmcreatehwnd返回的窗口句柄;(2)uint/unmsg:事件id,标志着事件类型;(3)uint/wparam:消息附带参数,当前未使用;(4)long/lparam:消息附带参数,指向wfsresult数据结构的指针;(5)long/ltimeout:等待消息发送完成的毫秒数(wfs_indefinite_wait意味着一直等待,直到发送完成);
comments(注解):该函数被sp调用,用来将消息发送给xfs管理器,应用层可以通过调用wfsgetmessage来获得该消息。当消息到达消息循环系统时,函数立即返回。应用层应该正在等待获得该消息,不然这个消息将会丢失;
errorcodes(错误代码):ifthefunctionreturnisnotwfs_success,itisoneofthefollowingerrorconditions:(1)wfs_err_no_messageloop,xfsmanager没有实现消息循环;(2)wfs_err_invalid_hwnd,窗口句柄不可用。
所述消息获取函数具体为wfmgetmessage,具体说明如下:
hresult(函数返回值):wfmgetmessage(hwnd,unmsg,wparam,lparam,dwtimeout),从xfs管理器获取一个消息;
parameters(参数):(1)hwnd/hwnd:通过wfmcreatehwnd返回的窗口句柄;(2)uint/unmsg:事件id,标志着事件类型;(3)uint/wparam:消息附带参数,当前未使用;(4)long/lparam:消息附带参数,指向wfsresult数据结构的指针;(5)long/ltimeout:等待消息发送完成的毫秒数(wfs_indefinite_wait意味着一直等待,直到发送完成);
comments(注解):当从消息循环系统中获得消息或者超时时,函数将立即返回;其他注解与wfmpostmessage函数的注解相同,不再赘述。
errorcodes(错误代码):ifthefunctionreturnisnotwfs_success,itisoneofthefollowingerrorconditions:(1)wfs_err_no_messageloop,xfsmanager没有实现消息循环;(2)wfs_err_invalid_hwnd,窗口句柄不可用。
所述句柄销毁函数具体为wfmdestroyhwnd,具体说明如下:
hresult(函数返回值):wfmdestroyhwnd/hwnd,销毁窗口句柄并且释放相关资源;
parameters(参数):hwnd/hwnd通过wfmcreatehwnd返回的窗口句柄;
comments(注解):窗口句柄应该被创建它的对象销毁,当窗口句柄被销毁后,它应该是无效的;
errorcodes(错误代码):ifthefunctionreturnisnotwfs_success,itisoneofthefollowingerrorconditions:(1)wfs_err_no_messageloop,xfsmanager没有实现消息循环;(2)wfs_err_invalid_hwnd,窗口句柄是无效的。
通过上述设置,本发明仅需对cwapart1做稍微调整,对所有设备类的指令集和接口不做任何改变,具体是对part1(ap与sp之间的调用关系与数据传递机制)部分进行linux系统适应性修改,不对指令集、数据结构、参变量等主体部分进行任何修改,最大限度保留了xfs标准内容,这样也就统一了linux、windows的差异。确保api和spi接口不做任何改变,使得各厂商快速开发应用和sp,并复用原来的知识财富。
除上述说明外,本发明还对头文件进行了修改,具体如下:
(1)新增错误码wfs_err_no_messagequeu定义
/******errorcodes*****************************************************/
#definewfs_err_no_messagequeue
(2)增加4个支撑函数定义
/******supportfunctions****************************************************/
hresultexternwinapiwfmcreatehwnd(lphwndlphwnd);
hresultexternwinapiwfmdestroyhwnd(hwndhwnd);
hresultexternwinapiwfmpostmessage(hwndhwnd,uintunmsg,uintwparam,longlparam,dworddwtimeout);
hresultexternwinapiwfmgetmessage(hwndhwnd,uint*unmsg,uint*wparam,long*lparam,dworddwtimeout)。
本发明还提供了二进制接口,表1列出了其中的一部分,xfsapi函数、dll位置及其固定序号值具体为:
可以理解的是,基于lfs标准的国产linux操作系统同样可以利用本发明所提供的linux操作系统实现方法实现,本领域技术人员可根据上述内容进行适应性调整,该部分内容的实现同样应视为本发明的保护范围,不再赘述。
本发明还提供了一种atm,所述atm运行有linux操作系统,所述linux操作系统配置有xfs子系统,并创建有文本文件,所述文本文件存储有从用于在atm中运行的windows操作系统注册表中导出的配置信息,且文本文件的格式与windows操作系统注册表中存储配置信息的文件格式相同,具体如上述方法实施例所述,不再赘述;
所述linux操作系统创建有以下函数:
句柄创建函数,用于被ap层调用后创建发送消息及接收消息的句柄,具体如上述方法实施例所述,不再赘述;
消息发送函数:用于被sp层调用后将指令消息发送至xfs管理器,具体如上述方法实施例所述,不再赘述;
消息获取函数:用于被ap层调用后从xfs管理器获取所述指令消息,具体如上述方法实施例所述,不再赘述;
句柄销毁函数:用于被ap层调用后销毁句柄创建函数所创建的句柄,具体如上述方法实施例所述,不再赘述。
进一步地,所述linux操作系统中的接口、事件、数据结构及配置文件格式符合xfs标准,具体如上述方法实施例所述,不再赘述。
进一步地,所述xfs子系统提供有用于供ap层及sp层调用的动态链接库,所述动态链接库存储于/user/lib目录下,具体如上述方法实施例所述,不再赘述。
进一步地,所述配置信息具体存储于/etc/xfs/xfs.conf,具体如上述方法实施例所述,不再赘述。
进一步地,句柄创建函数具体为wfmcreatehwnd,消息发送函数具体为wfmpostmessage,消息获取函数具体为wfmgetmessage,句柄销毁函数具体为wfmdestroyhwnd,具体如上述方法实施例所述,不再赘述。
下文本发明以一个应用ap和sp典型的交互流程进行提供服务时消息循环过程的具体说明,该例的步骤如表2所示:
此外,本发明还通过表3详细说明了另一例子的实现步骤:
本发明还提供了一种存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如上所述的linux操作系统实现方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
1.一种linux操作系统实现方法,其特征在于,linux操作系统配置有xfs子系统,所述linux操作系统实现方法包括:
从用于在atm中运行的windows操作系统注册表中导出配置信息;
在linux操作系统中创建文本文件,并将所导出的配置信息存储于所述文本文件,所述文本文件的格式与windows操作系统注册表中存储配置信息的文件格式相同;
在linux操作系统中创建以下函数:
句柄创建函数,用于被ap层调用后创建发送消息及接收消息的句柄;
消息发送函数:用于被sp层调用后将指令消息发送至xfs管理器;
消息获取函数:用于被ap层调用后从xfs管理器获取所述指令消息;
句柄销毁函数:用于被ap层调用后销毁句柄创建函数所创建的句柄。
2.根据权利要求1所述的linux操作系统实现方法,其特征在于,所述linux操作系统中的接口、事件、数据结构及配置文件格式符合xfs标准。
3.根据权利要求1所述的linux操作系统实现方法,其特征在于,所述xfs子系统提供有用于供ap层及sp层调用的动态链接库,所述动态链接库存储于/user/lib目录下。
4.根据权利要求1所述的linux操作系统实现方法,其特征在于,所述配置信息具体存储于/etc/xfs/xfs.conf。
5.根据权利要求1所述的linux操作系统实现方法,其特征在于,句柄创建函数具体为wfmcreatehwnd,消息发送函数具体为wfmpostmessage,消息获取函数具体为wfmgetmessage,句柄销毁函数具体为wfmdestroyhwnd。
6.一种atm,其特征在于,运行有linux操作系统,所述linux操作系统配置有xfs子系统,并创建有文本文件,所述文本文件存储有从用于在atm中运行的windows操作系统注册表中导出的配置信息,且文本文件的格式与windows操作系统注册表中存储配置信息的文件格式相同;
所述linux操作系统创建有以下函数:
句柄创建函数,用于被ap层调用后创建发送消息及接收消息的句柄;
消息发送函数:用于被sp层调用后将指令消息发送至xfs管理器;
消息获取函数:用于被ap层调用后从xfs管理器获取所述指令消息;
句柄销毁函数:用于被ap层调用后销毁句柄创建函数所创建的句柄。
7.根据权利要求6所述的atm,其特征在于,所述linux操作系统中的接口、事件、数据结构及配置文件格式符合xfs标准。
8.根据权利要求6所述的atm,其特征在于,所述xfs子系统提供有用于供ap层及sp层调用的动态链接库,所述动态链接库存储于/user/lib目录下。
9.根据权利要求6所述的atm,其特征在于,所述配置信息具体存储于/etc/xfs/xfs.conf。
10.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5中任一项所述的linux操作系统实现方法的步骤。
技术总结