目录
概念介绍
银行自助设备都用WOSA规范
WOSA(Windows Open System Arhitecture)开放系统架构。
XFS(Exensions for Financial Services)扩展金融服务。
AP (Application Program) 应用。
XFS Manager 管理器, API 函数到 SPI 函数的映射,
SP (Service Provider)服务提供层,用来底层驱动硬件设备。
Windows应用程序通过XFS Manager,利用XFS API函数通过逻辑名字参数调SPI
一个典型的 API 通讯过程如下:
StartUp (连接应用程序与 XFS Manager,其中包含版本信息)
Open ( 建立应用程序同 service provider 的通信过程)
Register (制定应用程序从 service provider 接受的消息)
Lock (应用程序获得唯一访问服务的权利)
Excute 功能,发送执行命令
Ulock (释放对服务的唯一控制权限)
Deregister (应用程序不再接受来自 service provider 的消息)
Close (结束应用程序同 service provider 之间的通信过程)
CleanUp (断开应用程序同 XFS Manager 的连接)
相关的库
MSXFS.DLL:提供基本的API和调用SPI函数。安装路径,如c:\windows\system32。
XFS_CONF.DLL:提供配置函数,比如读写配置信息。安装路径,如c:\windows\system32。
XFS_SUPP.DLL:提供了一些内存管理的函数,如内存分发之类。安装路径,如c:\windows\system32。
XFS API函数分为:
- 基本函数,它在所有金融服务分类中是一致的。
- 管理函数,用于特定目的的管理服务。
- 特殊服务命令, 对于一个(组)服务分类来说是特有的,它们用基本函数(WFSExecute, WFSAsyncExecute, WFSGetInfo, WFSAsyncGetInfo)发送到服务上。
函数的访问机制包括同步访问和异步访问。
基本函数:
WFSCancelAsyncRequest 【立即】 结束一个异步请求
WFSCancelBlockingCall 【立即】 结束一个模块操作
WFSStartUp 【立即】 建立应用程序与 XFS Manager 的连接
WFSGetInfo 【同步】 从 service provider 获取指定的服务信息
WFSAsyncGetInfo 【异步】 同上
WFSOpen 【同步】 建立应用程序与 service provider 的连接
WFSAsyncOpen 【异步】 同上
WFSRegister 【同步】 使应用程序监听某些类型的事件
WFSAyyncRegister 【异步】 同上
WFSLock 【同步】 应用程序对一个服务建立唯一控制
WFSAsyncLock 【异步】 同上
WFSExecute 【同步】 发送一个指定的服务命令给 service provider
WFSAsyncExecute 【异步】 同上
WFSUnlock 【同步】 释放应用程序对相应服务的唯一控制权限
WFSAsyncUnlock 【异步】 同上
WFSDeregiste 【同步】 应用程序结束一类消息的监视
WFSAsyncDeregister 【异步】 同上
WFSClose 【同步】 关闭应用程序和 service provider 的连接
WFSAsynclose 【异步】 同上
WFSCleanUp 【同步】 结束应用程序与 XFS Manager 的连接
特殊服务:
特殊服务巨多, 可以下载《WOSA/XFS官方文档》来看, 文档版本一直在更新
简单说一下特殊服务规则, 懂了这些你还是不会开发驱动, 但是看驱动日志运维足够了
特殊命令格式一般为: 【命令类型_CMD模块名_说明】
命令类型可以分为3种
1.命令信息 WFS_INF_
2.执行命令 WFS_CMD_
3.事件 WFS_EXEE_ WFS_SRVE_ WFS_USER_
CDM设备模块命名一般如下:
IDC_ID 身份证
IDC_IC IC卡
IDC_UKEY Ukey
PIN 密码键盘
PTR 打印
SIU 传感器和指示器
调用特殊服务案例:
#调用sp都得先启动
WFSStartUp()
WFSOpen()
WFSRegister()
1.命令信息
#获取读卡器的性能
WFSGetInfo(WFS_INF_IDC_CAPABILITIES)
2.执行命令
#加载密码键盘密钥
WFSExecute(WFS_CMD_PIN_IMPORT_KEY)
#读取密码键盘输入
WFS_CMD_PIN_GET_PIN()
#生成一个格式化了的PIN
WFS_CMD_PIN_GET_PINBLOCK()
#用A5纸打印一个html
WFSAsyncExecute(WFS_CMD_PTR_RAW_DATA)lpbData=[pagesource=A5;copies=1;duplex=1;color=0;direction=1;file[0]=C:\Users\ADMINI~1\AppData\Local\Temp\003863.html;stamp=StampName:0,xPos:10,yPos:20;]
#同步设置指示器灯亮
WFSExecute(WFS_CMD_SIU_SET_GUIDLIGHT)
#异步读卡
WFSAsyncExecute(WFS_CMD_IDC_READ_RAW_DATA)
#异步退卡
WFSExecute(WFS_CMD_IDC_EJECT_CARD)
3.事件
#此执行事件说明一个卡被插入设备中
EVENT IDC_IC EventID=[WFS_EXEE_IDC_MEDIAINSERTED]
#卡被退出
EVENT IDC_IC EventID=[WFS_SRVE_IDC_MEDIAREMOVED]
wosa标准驱动错误码
https://wenku.baidu.com/view/b841822e3169a4517723a321.html