WOSA/XFS_310_中文版.doc_第1页
WOSA/XFS_310_中文版.doc_第2页
WOSA/XFS_310_中文版.doc_第3页
WOSA/XFS_310_中文版.doc_第4页
WOSA/XFS_310_中文版.doc_第5页
已阅读5页,还剩145页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

欧洲标准化委员会专题协定CWA 15748-12008年7月ICS 35.240.50中文版金融服务扩展(XFS)接口说明(3.10版)第一部分:应用程序编程接口(API)- 服务提供程序接口(SPI);程序员参考此欧洲标准化委员会专题协定(CWA)由相关方代表专题研究组起草并通过,该专题研究组的与会成员在本协定前言部分中列出。该专题研究组编制本协定的正式会程已经欧洲标准化委员会的各会员国背书,但欧洲标准化委员会的各会员国和欧洲标准化委员会管理中心均不对本CWA的技术性内容或与其他标准或法规可能存在的矛盾负责。不得以任何形式将本CWA视作由欧洲标准化委员会及其成员编制的正式标准。本CWA可以公开用作欧洲标准化委员会的会员国标准化组织的参考文件。欧洲标准化委员会的成员包括下列国家的国家标准化组织:奥地利、比利时、保加利亚、塞浦路斯、捷克共和国、丹麦、爱沙尼亚、芬兰、法国、德国、希腊、匈牙利、冰岛、爱尔兰、意大利、拉脱维亚、立陶宛、卢森堡、马尔他、荷兰、挪威、波兰、葡萄牙、罗马尼亚、斯洛伐克、斯洛文尼亚、西班牙、瑞典、瑞士、和英国。欧洲标准化委员会COMIT EUROPEN DE NORMALISATIONEUROPISCHES KOMITEE FR NORMUNG管理中心地址:布鲁塞尔斯达沙特街36 B-1050(rue de Stassart, 36 B-1050 Brussels)版权所有 2008欧洲标准化委员会,为欧洲标准化委员会会员国在全球范围内保留以任何形式和方法进行利用的所有权利。参考号:CWA 15748-1:2008 D/E/F第2页CWA 15748-1:2008目录前言 51. 颁布3.10版本的背景 82. 参考资料 93. 金融服务扩展(XFS)概述 103.1 结构 113.2 API和SPI概述 133.3 设备类型 143.4 Unicode编码概述 154. 结构问题和执行问题 164.1 XFS管理器 174.2 服务提供程序 184.2.1 服务提供程序功能 184.2.2 服务提供程序“打包” 184.3 异步函数、同步函数和即时函数 194.3.1异步函数 194.3.2 同步函数 194.3.3 即时函数 204.4 处理API函数 214.5 打开会话 224.6 关闭会话 234.7 配置信息 244.8 专有服务设备访问 284.8.1 独立设备锁定方式 284.8.2 复合设备 294.9 超时 314.10 函数状态返回 324.11 通知机制- 事件登记 334.12 应用进程、线程和阻塞函数 354.13 供应商依赖模式 374.14 内存管理 385. 应用程序编程接口(API)函数 405.1 WFSCancelAsyncRequest 425.2 WFSCancelBlockingCall 435.3 WFSCleanUp 445.4 WFSClose 455.5 WFSAsyncClose 465.6 WFSCreateAppHandle 475.7 WFSDeregister 485.8 WFSAsyncDeregister 49第3页CWA 15748-1:20085.9 WFSDestroyAppHandle 515.10 WFSExecute 525.11 WFSAsyncExecute 545.12 WFSFreeResult 565.13 WFSGetInfo 575.14 WFSAsyncGetInfo 595.15 WFSIsBlocking 615.16 WFSLock 625.17 WFSAsyncLock 645.18 WFSOpen 665.19 WFSAsyncOpen 695.20 WFSRegister 725.21 WFSAsyncRegister 735.22 WFSSetBlockingHook 755.23 WFSStartUp 765.24 WFSUnhookBlockingHook 785.25 WFSUnlock 795.26 WFSAsyncUnlock 806. 服务提供程序接口(SPI)函数 816.1 WFPCancelAsyncRequest 826.2 WFPClose 836.3 WFPDeregister 846.4 WFPExecute 866.5 WFPGetInfo 886.6 WFPLock 906.7 WFPOpen 916.8 WFPRegister 946.9 WFPSetTraceLevel 956.10 WFPUnloadService 966.11 WFPUnlock 977. 支持函数 987.1 WFMAllocateBuffer 987.2 WFMAllocateMore 997.3 WFMFreeBuffer 1007.4 WFMGetTraceLevel 1017.5 WFMKillTimer 1027.6 WFMOutputTraceData 1037.7 WFMReleaseDLL 1047.8 WFMSetTimer 1057.9 WFMSetTraceLevel 106第4页CWA 15748-1:20088. 配置函数 1088.1 WFMCloseKey 1088.2 WFMCreateKey 1098.3 WFMDeleteKey 1108.4 WFMDeleteValue 1118.5 WFMEnumKey 1128.6 WFMEnumValue 1138.7 WFMOpenKey 1148.8 WFMQueryValue 1158.9 WFMSetValue 1169. 数据结构 1179.1 WFSRESULT 1179.2 WFSVERSION 11810. 消息 11910.1 命令执行完成和事件 11910.1.1 命令执行完成消息 11910.1.2 事件消息 11910.2 WFS_TIMER_EVENT 12010.3 WFS_SYSE_DEVICE_STATUS 12110.4 WFS_SYSE_UNDELIVERABLE_MSG 12210.5 WFS_SYSE_APP_DISCONNECT 12310.6 WFS_SYSE_HARDWARE_ERROR, WFS_SYSE_SOFTWARE_ERROR和WFS_SYSE_USER_ERROR 12410.7 WFS_SYSE_LOCK_REQUESTED 12610.8 WFS_SYSE_VERSION_ERROR 12711. 错误代码 12812. 附录A-功能加强和扩展计划 13112.1 事件管理和系统管理 13213. 附录B-XFS专题研讨组联系方式 13314. 附录C-C头文件 13414.1 XFSAPI.H 13414.2 XFSADMIN.H 14014.3 XFSCONF.H 14114.4 XFSSPI.H 143第5页CWA 15748-1:2008前言本CWA是XFS接口说明的3.10版。欧洲标准化委员会/信息系统标准化委员会(CEN/ISSS)XFS专题研究组召集了供应商、银行和其他金融服务公司参与研讨。可以从CEN/ISSS秘书处获得参与该专题研究组并给予本CWA支持的公司名录。本CWA于2007年11月29日经XFS专题研究组正式批准通过。欧洲标准化委员会/信息系统标准化委员会(CEN/ISSS)XFS专题研究组将持续对该规范进行评审和提出意见。因此,以后还会适时发行此CWA规范的修订版本,更新版本将取代本3.10版。发行的CWA由以下多个部分组成:第1部分:应用程序编程接口(API) 服务提供程序接口(SPI)程序员参考第2部分:服务分类说明程序员参考第3部分:打印机和扫描仪设备类接口 程序员参考第4部分:身份证件识别设备类接口 程序员参考第5部分:现金取款设备类接口 程序员参考第6部分:PIN 键盘设备类接口 程序员参考第7部分:支票读取器/扫描设备类接口 程序员参考第8部分:存放设备类接口 程序员参考第9部分:文本终端单元设备类接口 程序员参考第10部分:传感器和指示器单元设备类接口 程序员参考第11部分:由供应商依赖模式设备类接口 程序员参考第12部分:摄像头设备类接口 程序员参考第13部分:报警设备类接口 程序员参考第14部分:信用卡凸字识别单元设备类接口 程序员参考第15部分:现金存入设备类接口 程序员参考第16部分:发卡机设备类接口 程序员参考第17部分:条形码读取设备类接口 程序员参考第18部分:物品处理单元设备类接口 程序员参考第19部分到第28部分:保留将来备用。第29部分到第47部分是对本CWA的可选补充内容。这些部分定义了SNMP标准和服务提供程序输出统计信息的状态设置的整合。第29部分:XFS MIB结构和SNMP扩展 程序员参考第30部分:XFS MIB设备专用定义 打印机类第31部分:XFS MIB设备专用定义 ID卡设备类第32部分:XFS MIB设备专用定义 现金取款设备类第33部分:XFS MIB设备专用定义 PIN 键盘设备类第34部分:XFS MIB设备专用定义 支票读取器/扫描设备类第35部分:XFS MIB设备专用定义 存放设备类第36部分:XFS MIB设备专用定义 文本终端单元设备类第37部分:XFS MIB设备专用定义 传感器和指示器单元设备类第38部分:XFS MIB设备专用定义 摄像头设备类第39部分:XFS MIB设备专用定义 报警设备类第40部分:XFS MIB设备专用定义 信用卡凸字识别系统类第6页CWA 15748-1:2008第41部分:XFS MIB设备专用定义 现金存入设备类第42部分:保留将来备用。 第43部分:XFS MIB设备专用定义 供应商依赖模式设备类第44部分:XFS MIB应用管理第45部分:XFS MIB设备专用定义 发卡机设备类第46部分:XFS MIB设备专用定义 条形码读取设备类第47部分:XFS MIB设备专用定义 物品处理单元设备类第48部分到第60部分保留将来备用。第61部分:应用程序编程接口(API) 服务提供程序接口(SPI) 3.10版(本CWA)移植3.0版(CWA 14050) 程序员参考第62部分:打印机设备类接口 3.10版(本CWA)移植3.0版(CWA 14050) 程序员参考第63部分:身份证识别设备类接口 3.10版(本CWA)移植3.02版(CWA 14050) 程序员参考第64部分:现金取款设备类接口 3.10版(本CWA)移植3.0版(CWA 14050) 程序员参考第65部分:PIN键盘设备类接口 3.10版(本CWA)移植3.03版(CWA 14050) 程序员参考第66部分:支票读取器/扫描设备类接口 3.10版(本CWA)移植3.0版(CWA 14050) 程序员参考第67部分:存款设备类接口 3.10版(本CWA)移植3.0版(CWA 14050) 程序员参考第68部分:文本终端单元设备类接口 3.10版(本CWA)移植3.0版(CWA 14050) 程序员参考第69部分:传感器和指示器单元设备类接口 3.10版(本CWA)移植3.01版(CWA 14050) 程序员参考第70部分:供应商依赖模式设备类接口 3.10版(本CWA)移植3.0版(CWA 14050) 程序员参考第71部分:摄像头设备类接口 3.10版(本CWA)移植3.0版(CWA 14050) 程序员参考第72部分:报警设备类接口 3.10版(本CWA)移植3.0版(CWA 14050) 程序员参考第73部分:信用卡凸字识别设备类接口 3.10版(本CWA)移植3.0版(CWA 14050) 程序员参考第74部分:现金存入设备类接口 3.10版(本CWA)移植3.02版(CWA 14050) 程序员参考除了上述程序员参考规范外,本CWA的读者还应参考本文的补充性文件版本注释。版本注释包括对CWA规范的解释和说明,而非要求进行功能变更。可以从http:/www.cen.eu/isss/Workshop/XFS上找到现行的版本注释版本。该文件中的信息代表该主题研究组截止到发行之日对其所包含的问题的现有见解。仅供参考,可能对其进行更改,恕不另行通知。CEN/ISSS不对该文件做任何明示或默示保证。本CWA可以公开用作欧洲标准化委员会的会员国标准化组织的参考文件:AENOR、AFNOR、ASRO、BDS、BSI、CSNI、CYS、DIN、DS、ELOT、EVS、IBN、IPQ、IST、LVS、LST、MSA、MSZT、NEN、NSAI、ON、PKN、SEE、SIS、SIST、SFS、SN、SNV、SUTN和UNI。欢迎用户就CWA提出意见和建议,如有这些意见和建议请联系欧洲标准化委员会管理中心。第7页CWA 15748-1:2008修订历史:1.01993年5月24日API和SPI规范的最初版本1.111995年2月3日为API/SPI和服务类别定义分别编制单独规范;而且进行了更新。2.01996年11月11日发行更新版本,其中包括自助服务环境。3.02000年10月18日详细情况见日期为2000年10月18日的CWA14050-16 API/SPI文件移植2.0版生成3.0版,1.00修订版。3.102007年11月29日有关变更详情,请见CWA 15748-61:2007 API/SPI移植3.0版(见CWA14050)生成3.10版。第8页CWA 15748-1:20081. 颁布3.10版本的背景CEN/ISSS XFS专题研究组旨在推动规范的制定,以清晰明确地定义财务周边设备的多供应商软件接口。金融服务扩展(XFS)说明是经欧洲标准化委员会/信息系统标准化委员会(CEN/ISSS)专题研究组环境下编制的。CEN/ISSS专题研究组旨在就某一事项在欧洲范围内达成一致意见,形成可以发行的欧洲标准化委员会专题协定(CWA)。CEN/ISSS XFS专题研究组鼓励银行和供应商能够积极参与工业标准的制定。CEN/ISSS XFS专题研究组通过下设的研究小组以电子方式针对议题进行合作,并且每季度召开一次例会。3.10版XFS规范的制定以C API为基础,坚持以保护现有应用的技术投入为承诺。一系列因素促成了XFS规范这个版本的发行。技术的改进要求对现有规范的范围进行扩展,使该规范范围覆盖新设备,如:条形码读取、发卡机和物品处理单元。此外,还有通过实施经验和附加要求,带来的对规范现已覆盖的设备功能和能力的扩展压力。第9页CWA 15748-1:20082. 参考资料1. XFS 应用程序接口(API), 服务提供接口(SPI),程序员参考3.10版 2. UNICODE标准,版本5.0,发布于2006年11月9日,ISBN 0321480910第10页CWA 15748-1:20083. 金融服务扩展(XFS)概述金融服务扩展的一个关键内容就是对一组API、一组相应的SPI和支持服务的定义,使金融服务能够使用以Windows为基础的应用程序。本部分是对服务功能、结构、API集和SPI集的定义要点的描述,详细情况见第5部分到第10部分。规范定义了一组标准接口以便完成一些应用,例如,使用API集与某一特定服务提供程序通讯的应用程序可以对另一个厂商的相符服务提供程序生效,而无需做任何更改。尽管金融服务扩展(XFS)定义的是用于以Windows为基础的应用程序访问服务提供程序的通用结构,但是CEN/ISSS XFS专题研究组从最开始就一直将为金融机构专用的周边设备提供支持作为一个重点。由于这些设备通常较为复杂,难以管理,而且为各机构所专有,为这些设备开发以Windows为基础的应用程序和Windows操作系统的标准化接口就能直接提高金融机构和他们的设备供应商的生产效率和灵活性。第11页CWA 15748-1:20083.1 结构下图是金融服务扩展(XFS)系统的结构示意图。以Windows为基础的应用程序XFS APIXFS管理器 配置信息XFS SPI服务提供程序图2.1 - 金融服务扩展(XFS)结构应用程序使用API集通过金融服务扩展(XFS)管理器与服务提供程序通讯。大部分API都可以“同步”(管理器使应用程序等待,直到API函数执行完成)或“异步”调用(应用程序立即重新获得控制,与其函数并行执行)。本金融服务扩展(XFS)规范的所有共同执行工具就是金融服务扩展管理器,这个管理器可以为指定的API找到相应的SPI,然后发送请求到适当的SP。管理器使用配置信息使用API调用(对到“逻辑服务”或“逻辑设备”的)适当的SP入口点(即使作为最终目标的设备或服务在远程设备上,但入口点总是在本地设备上)。注意虽然API的调用可能是同步的也可能是异步的,但是SPI的调用总是异步的。金融服务的开发使用经过XFS和可依赖的金融服务周边设备的制造商负责开发和发行的关于服务和设备的SP。每个设备或服务的安装程序也必须定义适当的配置信息。配置信息能允许应用程序在任何时间点上请求关于设备状态的信息以及可使用服务的能力。SP的主要功能包括以下内容:l 将通用(即以表单为基础的)服务请求转化为服务专用命令。l 发送请求到本地服务或设备,或是一个远程系统,在SP中定义一个有效的对等接口。l 多个应用程序访问一个服务或设备,当请求时提供唯一访问权。l 管理服务或设备的硬件接口。l 以适当的方式管理服务和设备的异步性,通过Windows消息XFS管理器和应用程序总是具备此能力。该系统的设计通过在其所有功能方面提供最大的灵活性,来支持对复杂问题的解决方案,通常当前系统不能解决这些问题:l 多个服务提供程序,由多个厂商开发,能够在同一个单一的系统和网络中共存。第12页CWA 15748-1:2008l 服务类别定义是根据服务的逻辑功能作出的,没有考虑实际物理结构。具备多个不同功能(在本规范中称为“复合设备”)的物理设备被视作几个逻辑服务;由服务提供程序解决任何冲突。注意一个逻辑服务可能包含多个物理设备(例如,既有纸币发放功能又有硬币发放功能的自动柜员机)。l 同样地,一台物理设备可能由两个或三个用户共同使用(即,柜员机),而物理设备的同步是在服务提供程序层上管理的。l API的定义和相关的服务提供超时功能,从而允许应用程序避免锁死该类型,如果两个应用程序同时都想要对多个服务进行唯一访问,就可能会发生这种锁死的情况。l 该结构设计用于为将来开发网络和系统监控、措施和管理提供框架。注意图2.1是该结构的示意图,尤其要指出的是,该图未显示服务提供程序和服务提供程序管理的服务间的区别。本规范的重点在与服务提供程序,而不是服务本身,因为服务提供程序和服务间的通信是开发商的内部设计问题,应用程序和XFS管理器不涉及这些问题。事实上,服务提供程序可以用很多种不同的方式让应用程序能够调用服务。因此,本规范主要关注服务提供程序,因为与XFS管理器进行通信的是服务提供程序。只有在适当的时候才会偶尔提到“服务”。举例说明下面的图2.2展示了一个支持一组金融周边设备的XFS系统。注意,在这个框架中,XFS管理器接口直接协调一组直接与物理设备相连的服务提供程序。因此,服务提供程序显示为在执行服务提供程序函数、服务函数和设备驱动函数,尽管这些很可能是在两个或两个以上的单独层上执行的。还有很多可能的其他配置。工作站1工作站2工作站3应用应用应用WOSA/XFS API 配置信息WOSA/XFS API 配置信息WOSA/XFS API 配置信息WOSA/XFS管理器WOSA/XFS管理器WOSA/XFS管理器WOSA/XFS SPIWOSA/XFS SPIWOSA/XFS SPI存折打印机服务提供程序供应商X存折打印机服务提供程序供应商Y存折打印机服务提供程序供应商Y磁卡读取器服务提供程序供应商Y存折打印机服务提供程序供应商X存折打印机供应商X存折打印机供应商Y磁卡读取器供应商Y存折打印机供应商X图2.2 支行系统的XFS结构图例还应该注意的是,一个供应商的服务提供程序未必与其他供应商的服务提供程序相兼容,如图2.2所示。如果一个应用程序需要访问不同供应商执行的相同服务类别,就要为各个供应商安装服务提供程序。第13页CWA 15748-1:20083.2 API和SPI概述本文件的第5部分到第8部分展示了允许金融应用程序以标准模式与金融服务和金融设备通信的接口。这些接口函数的水平足以允许无缝重定向到下列操作系统的其他部分。例如,打印机可能要依赖操作系统提供的一组服务,但是为了处理金融打印机和应用程序的独有特性,服务提供程序将预先处理该命令,然后将派生命令重定向到操作系统的打印服务上。在其他程序执行中,打印机可能完全由XFS服务机制支持,而不以任何方式使用操作系统的打印服务。API结构如下列命令集:l 基本函数,如:StartUp/CleanUp(启动/清除)、Open/Close(打开/关闭)、Lock/Unlock(锁定/解锁)和Execute(执行),这些命令是所有金融服务扩展(XFS)设备/服务类别的通用命令;l 管理函数,如设备初始化、重置、暂停或恢复,这些命令用于管理设备和服务,以及l 专用命令,用来请求服务/设备信息,以及初始化设备/服务专用函数;这些命令将作为GetInfo(获得信息)和Execute(执行)等基本函数的参数发送给设备和服务。这些服务专用命令由一组单独的规范规定,每个规范包括一个服务类别。尽最大可能,使用于多个设备/服务类别的具体命令的语法在所有设备上保持一致。主要目的就是为尽可能广泛的设备类型提供标准化的函数代码和函数结构。SPI尽可能与API保持一致。一些命令专门由XFS管理器处理,因此,不由SPI处理,这样在这两个接口层上传递的具体参数就只有微小的差异。下面是典型的API使用方案。本例以打印表格所用的函数举例说明。 StartUp(启动,将应用程序连接到XFS管理器,包括版本协商) Open(打开,在应用程序和服务提供程序间建立会话) Register(注册,指定应用程序应该从服务提供程序收到的消息) Lock(锁定,通过应用程序获得对服务的唯一访问) 多个Execute(执行)函数,传递一个或多个具体命令: Print_Form(打印表格) 等等UnLock(解锁,通过应用程序获得对服务的唯一访问)? Deregister(注销,指定应用程序不再从服务提供程序收到消息)Close(关闭,结束应用程序和服务提供程序间的会话) CleanUp(清除,断开应用程序和XFS管理器的连接)注意,在一个(由Open和Close定义的)会话中,应用程序可以在任何时间改变想要(用Register)从服务提供程序接收的消息类型,也可以Lock服务,将服务只用于指定的期间(主要是为各个交易),或将服务用于整个会话。另外,还要注意,有些命令不是必须用的,是否使用这些命令取决于管理和共享设备的方式(即,Lock/Unlock、Register/Deregister)。第14页CWA 15748-1:20083.3 设备类型属于金融服务扩展(XFS)3.10版的设备类型在单独的服务类别定义文件中说明。第15页CWA 15748-1:20083.4 Unicode编码概述如果XFS表单或介质文档采用了UNICODE编码,与UNICODE标准【参考2】相一致,该文档必须以Unicode字节顺序标记(BOM)开始,随后的UTF-16编码数据必须采用BOM指定的字节顺序。文本文件中的两字节BOM前缀表示采用小端(Little Endian)(0xFFFE)还是大端(Big Endian)(0xFEFF)记法。在Windows操作系统中,字节顺序编码采用小端法(Little Endian)。如果命令参数数据采用UNICODE编码,则该数据将为UTF-16编码,而其字节顺序必须用小端法(Little Endian)。UNICODE命令参数不以BOM开始。第16页CWA 15748-1:20084. 结构问题和执行问题本文件的其余部分提供了CEN/ISSS金融服务扩展(以下简称“XFS”)的技术规范。在本规范中,XFS应用程序编程接口(API)函数和服务提供程序接口(SPI)函数总是在为应用程序提供标准化的活动接口,使其获得对服务提供程序的访问方面进行描述。这种结构允许服务提供程序基于Microsoft Windows操作系统,向金融应用程序提供一组可扩展的功能,包括对金融机构专用的周边设备的访问。由于CEN成员一直最重视的XFS实际问题就是为这些周边设备提供存取能力,所采用的样例主要都与设备控制和物理输入/输出有关。金融服务扩展的关键因素是API的定义和相应SPI的定义,XFS管理器采用这些定义,和XFS管理器提供的支持服务集一起与服务提供程序通信。这些因素与XFS执行程序相结合,为基于Windows操作系统的应用程序提供对金融设备和服务的访问。为了提供多供应商交互功能,规范定义了一组标准接口:如果应用程序使用API与服务提供程序成功通信,该API就应该也对又其他供应商开发的其他符合的同类型服务提供程序有效,而不需要更改。为了对设备的多个硬件实现有效,应用程序必须恢复设备功能信息(这样能够允许应用程序成功地与相同硬件设备的不同种类进行交互)。使用供应商专用XFS命令字段的应用程序可能无法与其他供应商的相符服务提供程序成功交互。为了在最大程度上使多设备服务提供程序实现的设备控制相一致,应用程序应隔离供应商对设备的专用访问。任何符合SPI定义的服务提供程序对一组符合的应用程序都有效。由于XFS设备类型的新版本在不断的开发和发布中,设备类型接口规范也会不可避免地发生变更。本规范下文中有对版本协商程序的描述,版本协商程序用于控制应用程序的变更。需要对应用程序进行更新,以支持XFS的新版本,但是为了尽量降低版本升级的工作量,建议用以下方式开发新版本,即XFS能够以适当的方式处理将来XFS版本中添加到现有命令中的附加错误代码和新的输出文本值。另外,应用程序必须为所有接收到的事件释放内存,其中要包括在开发时应用程序不知道的事件,即,对任何XFS事件,至少必须进行释放与该事件相关的内存的处理。为了更加清楚明晰,XFS使用了三个前缀来命名函数接口:函数类型:前缀 程序调用方 程序提供方API函数:WFS. 应用程序 XFS管理器(主要传递给WFP函数)SPI函数:WFP. XFS管理器 服务提供程序支持函数/配置函数:WFM. 服务提供程序 XFS管理器 应用程序第17页CWA 15748-1:20084.1 XFS管理器XFS管理器提供XFS子系统的全面管理。XFS管理器负责为API(WFS.)函数寻找SPI(WFP.)函数的路径,并调用适当的供应商专用服务提供程序。注意,调用的对象总是本地服务提供程序。XFS管理器使用WFSOpen函数或WFSAsyncOpen函数的逻辑名称参数决定要调用的服务提供程序。逻辑名称是对定义服务类别(即,打印机、自动柜员机等)、服务类型(即,凭条打印机、日志打印机等)和服务提供程序(DLL链接文件名)以及附加信息的配置信息提供访问的关键。逻辑名称至少在每个工作站内必须是唯一的。有关配置信息的访问和管理,见第4.7部分和第8部分。XFS管理器也提供第7部分中定义的支持函数(WFM.)和第8部分中定义的配置函数(也是WFM.)。在允许应用程序利用任何XFS子系统管理的服务前,应用程序必须先让子系统对其本身进行识别。通过使用WFSStartUp函数能够达到这个目的。无论应用程序利用的XFS服务数量有多少,一个应用程序只需要执行该函数一次,因此该函数通常都在应用程序初始化阶段被调用。同样地,函数WFSCleanUp主要在应用程序关闭过程中调用。如果在未发送WFSCleanUp函数的情况下,存在或关闭应用程序,XFS管理器会自动进行清理,包括关闭应用程序没有关闭的与服务提供程序间的任何会话。第18页CWA 15748-1:20084.2 服务提供程序各个供应商的各个XFS服务均通过称作服务提供程序的服务专用模块访问。例如,供应商A的日志打印机通过供应商A的日志打印机服务提供程序访问,供应商B的凭条打印机通过供应商B的凭条打印机服务提供程序访问。下列部分描述了服务提供程序的功能和打包。4.2.1 服务提供程序功能XFS服务提供程序的主要功能与各自的服务驱动和/或设备驱动协同作用,这些主要功能如下:注意,实现这些功能的方式是服务提供程序开发商的工作。为请求设置到设备或服务的路径,这些设备或服务可能处于远程工作站上。服务提供程序可能以多种方式与远程访问进行通信,如NetBIOS、具名管道、RPC(远程过程调用)、Windows套接字、专用网络编程接口等。将通用请求转化为资源专用命令。注意,这不仅涉及到服务专用命令的转化,也涉及到使用的资源自带命令的转化。例如,命令不会转化为“Receipt Printer Service” (接收打印服务)命令,而是转化为“Brand X, Model Y Receipt Printer”(X品牌,Y型接收打印机)命令。例如,驱动程序可能执行设备专用转换表或设备专用转化过程本身,或采用标准操作系统设备接口(如Windows GDI)(如果特定的周边设备有这些资源可用)。用多个应用程序任意访问该资源。注意,如果一个物理设备包括多个周边设备(例如,一台即具有凭条打印又具有日志打印功能的打印机),这也可能包括对子设备的任意访问。管理连接该资源的接口。在物理设备受控制的情况下,这包括管理设备的硬件接口。例如,服务提供程序可能使用标准操作系统设备驱动程序、供应商编写的专用设备驱动程序等。以与应用程序一致的方式管理服务的异步性。必须总是以Windows消息的形式向XFS管理器和应用程序返回提示SPI的异步性。错误校正。在些类型的软件故障中,如应用程序崩溃,服务提供程序会丢失与应用程序的连接。在这种情况下,服务提供程序负责“有序地”关闭与该应用程序的会话。尤其是,服务提供程序会生成一个系统事件(见第4.11部分),指出该连接丢失。如果有任何来自该应用程序的请求尚未处理,还将为各执行完成生成一个正常情况下应向该应用程序发出完成消息的系统事件。4.2.2 服务驱动“打包”XFS服务提供程序可以如下所示的多种方式打包成DLL链接库:每个DLL链接库包含一个服务提供程序;例如,供应商可能创建日志打印机DLL、凭条打印机DLL、自动柜员机DLL等。每个DLL链接库包含多个服务提供程序;例如,供应商可能创建一个DLL,其中包含用于所有XFS兼容打印机的服务提供程序。在单个DLL中包含一个具体供应商的全部服务提供程序。第19页CWA 15748-1:20084.3 异步函数、同步函数和即时函数Windows和XFS是建立在事件驱动异步模式上的。然而,XFS设计允许应用程序使用其接口以异步或同步方式执行。因此,对于各适用函数,API支持其两个版本(即,应用程序可以请求用异步WFSAsyncLock函数或同步WFSLock函数锁定服务)。各XFS API函数以三种同步模式的一种运行:异步、同步或即时。下一部分对这三种模式进行说明。注意,SPI是纯粹的异步接口,因此,所有SPI函数均为异步函数或即时函数;不存在同步SPI函数。关于API和SPI函数及其同步模式的总结见第5部分和第6部分。4.3.1异步函数异步模式用于可能需要不确定时间量完成的操作。相对于同步模式,用异步模式进行的操作允许应用程序以Windows自带的事件驱动、基于消息的方式进行操作。异步请求(如,WFSAsyncExecute)的处理过程如下:应用程序调用XFS管理器。XFS管理器生成序列号,即RequestID,分配给请求,再调用服务提供程序。服务提供程序给请求安排延期处理,并立即返回给XFS管理器。XFS管理器将RequestID返回给应用程序,并带有显示该请求已经被初始化并正在处理中的状态。在某一点,服务提供程序处理该延期请求。处理完成时,服务提供程序向应用程序在其原始调用中指定的窗口句柄发出一个完成消息。为了保证灵活性,使用异步函数的应用程序可以为每个请求指定另一个窗口。消息包括一个指向WFSRESULT数据结构的指针,定义请求结果(其中包括RequestID)、状态代码和其他相关数据。4.3.2 同步函数同步模式也有应用,如果操作可能需要不确定时间量来完成,但应用程序希望以顺序模式处理该函数,即使用同步模式。在操作完成前,XFS管理器不向应用程序返回控制,这样,同步函数被称为阻塞函数。由应用程序发出的各个同步调用在传送给服务提供程序前,均由XFS管理器转化为其异步SPI调用。如果在Windows 3.x系统中阻塞操作没有立即完成,XFS管理器将代调用线程执行Windows消息环,由此保证Windows系统的运转。有关进程、线程和消息环的详细情况,见第4.12部分。在Windows NT环境中,调用应用程序线程在请求完成时被封锁。一个线程一次只有一个未处理的阻塞XFS调用。有关同步函数的管理的更多情况,包括默认消息环的替换,见第4.12部分。同步请求(如,WFSExecute)的处理过程如下:应用程序。调用XFS管理器XFS管理器将请求转化为异步SPI,生成RequestID以跟踪该请求,提供自己的窗口句柄以接收完成消息,再调用服务提供程序DLL。服务提供程序给请求安排延期处理,并立即返回给XFS管理器。XFS管理器模拟如上所述的以及第4.12部分中提到的同步处理。在某一点,服务提供程序处理该延期请求。处理完成时,服务提供程序向XFS管理器指定的窗口句柄发出一个完成消息。消息包括一个指向WFSRESULT数据结构的指针,定义请求结果(其中包括RequestID)、状态代码和其他相关数据。XFS管理器从完成消息中解压缩信息,使其成为适当的参数,然后把这些参数返回给应用程序,解除对原应用程序请求的阻塞。第20页CWA 15748-1:20084.3.3 即时函数即时函数是既非同步又非异步的API函数。典型的即时API不与服务或物理设备通信(也不以任何其它方式使用网络),因此无论是否成功,都能够保证立即完成。即时函数以两种方式处理:完全由XFS管理器处理,这种情况下,立即返回给应用程序。例如:WFSStartUp和WFSSetBlockingHook。由XFS管理器作为即时SPI传递给服务提供程序。服务提供程序处理该请求,并立即返回给XFS管理器,XFS管理器立即返回给应用程序。例如:WFSCancelAsyncRequest和WFMSetTraceLevel。第21页CWA 15748-1:20084.4 处理API函数应用程序调用XFS API函数时,下列处理方案之一将会发生。注意,这种分类与上述API同步模式不同。有关API函数到SPI函数的路径,见第6部分。XFS管理器直接将函数转化为相应的SPI函数(如,WFSAsyncRegister)。XFS管理器进行一些预处理,然后将该函数转化为相应的SPI函数(如,WFSAsyncExecute)。XFS管理器进行一些预处理,然后将该API函数转化为不同的SPI函数,再将该SPI函数传递给服务提供程序。由于大多数同步API函数被转化为其相应的SPI函数,因此这些同步API函数(如,WFSLock)均属于这种类型。XFS管理器进行一些预处理,然后将该API函数转化为多个SPI函数,再将该SPI函数传递给服务提供程序(如,WFSOpen)。该函数完全在XFS管理器内部处理(如WFSIsBlocking、WFSSetBlockingHook)。服务提供程序(有时和应用程序一起)调用XFS管理器,以调用第7部分中定义的支持函数和第8部分中定义的配置函数。第22页CWA 15748-1:20084.5 打开会话一旦在应用程序和XFS管理器间(通过WFSStartUp)成功建立了连接,应用程序就通过发出WFSOpen(或WFSAsyncOpen)请求与服务提供程序建立虚拟会话。打开的会话根据XFS配置的定义指向“逻辑服务”。将会给会话分配一个服务句柄(hService),此句柄用于该会话期间对服务的所有调用。注意,如果应用程序需要使用相互依托的复合设备(见第4.8.2部分),应用程序可以选择是否要直接管理“应用程序标识”的概念。应用程序通过使用WFSCreateAppHandle函数获得应用程序句柄(hApp)来达到这个目的,这个应用程序句柄在系统内是唯一的。此函数可以多次调用,从而获得多个唯一的句柄。然后,应用程序句柄参数被用在WFSOpen函数中,指引服务提供程序将指定的应用程序句柄与初始化的会话绑定。这样就能够使单一的应用程序进程(潜在多线程)作为多应用程序对XFS子系统起作用,允许有效地使用相互依托的复合设备。使用多文档接口(MDI)的应用程序就是证明这种应用有用处的例证;应用程序可以将应用程序句柄和各个MDI子窗口相关联。有关将应用程序句柄用于复合设备的更多内容见第4.8.2部分。注意,服务和应用程序句柄都不能由两个或两个以上应用程序共享。XFS管理器对打开的会话所做的指令包括以下内容:l 检索定义指定的逻辑服务的配置信息,以确定服务提供程序的DLL名称。逻辑服务名称是获得配置信息的关键。l 如果包含被请求的服务提供程序的DLL尚未载入,载入该DLL。l 根据同步打开或异步打开的API是否已经被发出,进行预处理,在必要情况下进行转换。l 生成唯一的服务句柄(hService),该句柄标示出与服务提供程序间正在建立的会话,该句柄将被作为参数传回给应用程序。l 调用服务提供程序的WFPOpen函数,传递需要的参数。服务提供程序执行以下操作:l 用指定XFS管理器请求的SPI版本的参数和应用程序请求的服务专用接口版本进行版本协商。l 检索配置信息。l 和由指定工作站的配置指定的服务间异步建立会话,如有必要,依靠提供的传输设备。l 在请求完成时,发出完成消息(WFS_OPEN_COMPLETE),这个消息传给应用程序要求调用WFSAsyncOpen,并传给XFS管理器要求调用WFSOpen。注意,如第4.8部分专有服务设备访问中的定义述,即使服务被另一个应用程序锁定,打开的函数仍继续。在执行其使用的服务的WFSOpen(及其余函数WFSClose)的时机方面,应用程序编程器明显至少有以下两种选择:l 在应用程序初始化过程中打开服务,保持服务打开状态,在应用程序关闭过程中关闭这些服务。l 在每次得到要求时打开服务,使用服务,然后立即关闭服务。这两种方法各具优势。例如,第一种方法可能提供更好的性能,而第二种方法可能更易于编程。不论哪种情况,成功完成打开后,XFS子系统返回一个服务句柄,该句柄必须用于所有与服务的后续通信。注意,即使服务类型相同,应用程序仍必须为各个想要使用的逻辑服务执行打开。例如,如果应用程序想要使用两个独立的凭条打印机,应用程序必须打开两个单独的逻辑服务。而且,即使一组设备装置在同一个设备中,应用程序仍可能需要打开多个逻辑服务。例如,既有凭条打印功能又有日志打印功能的复合打印机。如果应用程序要求既访问凭条打印机函数又访问日志打印机函数,应用程序必须打开一个凭条打印逻辑服务和一个日志打印逻辑服务。第23页CWA 15748-1:20084.6 关闭会话如果应用程序不再需要

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论