WOSA/XFS 3.10 中文版 04

更新时间:2024-05-29 04:49:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

欧洲标准委员 工作室协议

CWA 15748-4

2008年 7月

ICS 35.240.50

中文版本

扩展金融服务(XFS)接口指定书-3.10版本-第四部分:识别卡读卡器类接口-程序员参考

有关各方的工作室代表已经起草并核准了该工作室协议,该工作室协议的章程在工作室协议的前言中指明。

正式程序之后,接着工作室通过讨论产生工作室协议。该工作室协议由CEN的各成员国签署认可,但是无论是CEN的各成员国还是CEN管理中心,都不对该CEN工作室协议的技术内容负责,或者对违反法律法规或标准而造成的可能的冲突负责。

该工作室协议绝不能作为CEN及其成员国所颁布的官方标准。

该工作室协议可以作为CEN成员国国际标准团体的公开参考文件。

CEN成员国的国际标准团队包括以下国家:奥地利,比利时,保加利亚,塞浦路斯,捷克共和国,丹麦,爱沙尼亚,芬兰, 法国,德国,希腊,匈牙利,冰岛,爱尔兰,意大利,拉脱维亚,立陶宛,卢森堡,马耳他,荷兰,挪威,波兰,葡萄牙,罗马尼亚,斯洛伐克,斯洛文尼亚,西班牙,瑞典,瑞士和英国。

欧洲标准化委员会

管理中心:布鲁塞尔 B-1050 斯达沙街道36号

? 2008 CEN

任何形式以及任何方式的使用权都归CEN国际成员国所有.

参考号:CWA 15748-3:2008D/E/F

第2页

CWA 15748-4:2008

目录

1.

前言........................................................................................................................... 4

绪论.................................................................................................................…7

1.1 颁布3.10版本的背景 ....................................................................................................................... 7 1.2 XFS 服务-特殊程序 ........................................................................................................................7

2. 3. 4.

识别卡读写器 ...........................................................……………….………………8 参考资料 .......................................................................................................... 9 命令信息………................................................................................................ 10

4.1 WFS_INF_IDC_STATUS............................................................................................................. 10 4.2 WFS_INF_IDC_CAPABILITIES .................................................................................................. 15 4.3 WFS_INF_IDC_FORM_LIST....................................................................................................... 19 4.4 WFS_INF_IDC_QUERY_FORM.................................................................................................. 20 4.5 WFS_INF_IDC_QUERY_IFM_IDENTIFIER ................................................................................ 21

5.

执行命令………….......................................................................................... 22

5.1 WFS_CMD_IDC_READ_TRACK ................................................................................................ 22 5.2 WFS_CMD_IDC_WRITE_TRACK .............................................................................................. 24 5.3 WFS_CMD_IDC_EJECT_CARD................................................................................................. 26 5.4 WFS_CMD_IDC_RETAIN_CARD ............................................................................................... 28 5.5 WFS_CMD_IDC_RESET_COUNT .............................................................................................. 29 5.6 WFS_CMD_IDC_SETKEY .......................................................................................................... 30 5.7 WFS_CMD_IDC_READ_RAW_DATA........................................................................................ 31 5.8 WFS_CMD_IDC_WRITE_RAW_DATA ...................................................................................... 35 5.9 WFS_CMD_IDC_CHIP_IO .......................................................................................................... 37 5.10 WFS_CMD_IDC_RESET........................................................................................................... 39 5.11 WFS_CMD_IDC_CHIP_POWER .............................................................................................. 40

5.12 WFS_CMD_IDC_PARSE_DATA .............................................................................................. 41 5.13 WFS_CMD_IDC_SET_GUIDANCE_LIGHT ............................................................................. 42 5.14 WFS_CMD_IDC_POWER_SAVE_CONTROL ......................................................................... 43

6.

事件 ................................................................................................................. 44

6.1 WFS_EXEE_IDC_INVALIDTRACKDATA .................................................................................. 44 6.2 WFS_EXEE_IDC_MEDIAINSERTED ......................................................................................... 45 6.3 WFS_SRVE_IDC_MEDIAREMOVED ......................................................................................... 46 6.4 WFS_EXEE_IDC_MEDIARETAINED ......................................................................................... 47 6.5 WFS_EXEE_IDC_INVALIDMEDIA ............................................................................................. 48 6.6 WFS_SRVE_IDC_CARDACTION............................................................................................... 49 6.7 WFS_USRE_IDC_RETAINBINTHRESHOLD............................................................................. 50 6.8 WFS_SRVE_IDC_MEDIADETECTED ........................................................................................ 51

第3页

CWA 15748-4:2008

6.9 WFS_SRVE_IDC_RETAINBINREMOVED ................................................................................... 52 6.10 WFS_SRVE_IDC_RETAINBININSERTED ................................................................................. 53 6.11 WFS_EXEE_IDC_INSERTCARD................................................................................................ 54 6.12 WFS_SRVE_IDC_DEVICEPOSITION ........................................................................................ 55 6.13 WFS_SRVE_IDC_POWER_SAVE_CHANGE ............................................................................ 56

7. 8.

Form描述 .......................................................................................................... 57 C-头文件............................................................................................................ 60

第4页

CWA 15748-4:2008

前言

此CWA是XFS接口指定书3.0版本。

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部分:密码键盘分类接口-程序员参考 第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读卡器的具体定义-识别卡读卡器分类 第32部分:XFS MIB读卡器的具体定义-取款机分类 第33部分:XFS MIB读卡器的具体定义-密码键盘分类 第34部分:XFS MIB读卡器的具体定义-检查器/扫描仪分类 第35部分:XFS MIB读卡器的具体定义-信封存款设备分类 第36部分:XFS MIB读卡器的具体定义-文字输入终端分类 第37部分:XFS MIB读卡器的具体定义-传感器和指标灯单元分类 第38部分:XFS MIB读卡器的具体定义-照相机分类 第39部分:XFS MIB读卡器的具体定义-报警器分类 第40部分:XFS MIB读卡器的具体定义-信用卡凸字识别分类

第41部分:XFS MIB读卡器的具体定义-现金模块分类 第42部分:吞卡,以备今后之用。

第43部分:XFS MIB读卡器的具体定义-厂商维护模式分类 第44部分:XFS MIB应用管理

第45部分:XFS MIB读卡器的具体定义-发卡器分类

第46部分:XFS MIB读卡器的具体定义-条形码阅读器分类 第47部分:XFS MIB读卡器的具体定义-项目处理模块分类 第48-60部分被吞卡,以供今后使用。

第5页

CWA 15748-4:2008

第61部分:应用程序编程接口( API )-服务驱动接口( SPI )-从3.0版(CWA 14050)升级到3.10版本(该CWA)-程序员参考

第62部分:打印机分类接口-从3.0版(CWA 14050)升级到3.10版本(该CWA)-程序员参考

第63部分:识别卡读卡器分类接口-从3.02版(CWA 14050)升级到3.10版本(该CWA)-程序员参考 第64部分:自动取款机分类接口-从3.0版(CWA 14050)升级到3.10版本(该CWA)-程序员参考 第65部分:密码键盘分类接口-从3.03版(CWA 14050)升级到3.10版本(该CWA)-程序员参考 第66部分:检查器/扫描仪分类接口-从3.0版(CWA 14050)升级到3.10版本(该CWA)-程序员参考 第67部分:信封存款设备分类接口-从3.0版(CWA 14050)升级到3.10版本(该CWA)-程序员参考 第68部分:文字输入终端分类接口-从3.0版(CWA 14050)升级到3.10版本(该CWA)-程序员参考 第69部分:传感器和指标灯分类接口-从3.01版(CWA 14050)升级到3.10版本(该CWA)-程序员参考 第70部分:厂商维护模式分类接口-从3.0版(CWA 14050)升级到3.10版本(该CWA)-程序员参考

第71部分:照相机分类接口-从3.0版(CWA 14050)升级到3.10版本(该CWA)-程序员参考 第72部分:报警装置分类接口-从3.0版(CWA 14050)升级到3.10版本(该CWA)-程序员参考

第73部分:信用卡凸字识别分类接口-从3.0版(CWA 14050)升级到3.10版本(该CWA)-程序员参考 第74部分:现金存款模块分类接口-从3.02版(CWA 14050)升级到3.10版本(该CWA)-程序员参考

除了这些程序员参考指定书,该CWA的读者也可以参见一个补充文件,叫作版本注释。该发行指定包含CWA指定书的澄清和解释,这不需要功能变化。目前版本的版本注释可参见网上,网址为http://www.cen.eu/isss/Workshop/XFS。

此文档中的信息代表了截至出版日期时,工作室针对所讨论问题的看法。这些仅供参考之用,如有变更,恕不另行通知。CEN/ISSS针对此文件不作任何担保,不论它是明示或暗示的。

该CEN工作室协议是作为CEN各成员国的公开的参考文件,提供直接使用,包括以下参考文件: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 and UNI 欢迎CEN工作室协议用户提供意见或建议,它们都会被发送到CEN管理中心。

第6页

CWA 15748-4:2008 修订历史: 1.0 1.11 2.0 3.0 1993年5月24号 最初颁布的API和SPI指定书 1995年2年3号 指定书分成两个独立文档:API/SPI 和API/SPI和服务分类的定义 1996年11月11号 2000年10月18号 删除了注册参考资料,它作为WFS_USRE_IDC_RETAINBINTHRESHOLD命令中极限值的补充。 声明在任何强制性的命令中不需要表单定义的属性。 澄清WFS_IDC_DEVBUSY的意义。 更新版本,该版本包括自助服务环境 增加了WFS_CMD_IDC_RESET命令。 增强了高矫顽力 欲知详情请参见CWA 14050-18:2000 IDC从2.0版本升级到3.0版本 3.02 2003年,5月21号 3.10 2007年11月29号 进行了更新,以处理智能/Dip读卡器和带有永久连接芯片卡的读卡器的锁定智能卡。 欲知详情请参见 CWA 14050-26:2003 IDC,从3.0版本升级到3.02版本。 修改指定请参见 CWA 15748-62:2007 IDC 从3.0版本 (参见 CWA 14050)升级到 3.10版本

1. 绪论

第7页

CWA 15748-4:2008

1.1 颁布3.10版本的背景

CEN/ISSS XFS工作室的目的是促进形成一个明确无误的指定书,以定义一个多厂商软件界面金融外围读卡器。XFS(扩展金融服务)指定书在CEN/ISSS工作室中产生(CEN/ISSS是欧洲标准化委员会/信息社会标准化体系)。CEN/ISS工作室的目的是就某一问题在欧洲范围内达成共识,可以出版为CEN工作室协议(CWA)。

CEN/ISSS XFS工作室鼓励银行和厂商的参与,这是出于创立一个行业标准的考虑。CEN/ISSS XFS工作室通过采用重点分类小组电子工作方式和季度会议来实现其目标。 3.10版本的XFS指定书是基于C语言API接口,且其交付是基于对现有应用程序保护技术的持续投资的承诺。该版本的XFS指定书由一系列的因素促成。

有了技术,则迫切要求必须扩大现有的指定书规范,这包括新的读卡器,诸如条形码阅读器,发卡器读卡器和项目处理模块等带来的要求。 同样,实际经验和附加要求也带来了压力,这些因素也要求扩大现有读卡器的功能和能力的指定书。

1.2 XFS服务-特殊程序

服务类型由它们各自的特殊服务命令和相关的数据结构,错误码,信息等定义。这些命令用来请求特定于一个或多个类别服务驱动的函数,但不通用于全部的服务驱动,因此不包括在通用的基本或管理API函数中。

当一个特殊服务命令通用于两个或更多服务驱动时,此命令的语法在所有的服务中要尽可能类似,因为XFS的一个主要目标是指定各种服务的功能代码和结构。例如,利用WFSExecute函数,从不同服务所读取的各种数据命令将尽可能的在语意和数据结构上相似。

通常,某一服务类型的特殊命令集被定义为某特殊能力的扩展集,它很可能由该服务类型的研发者提供。因而任何特定读卡器,通常只支持一种指定命令系列的子集。

在以下三种情况下,服务驱动可能会收到它不支持的特殊服务的命令:

? XFS指定书为服务驱动的类别定义了性能要求,然而厂商的特定服务工具却不支持它,而且不受支持的性能未被考虑为此服务的基本性能。在此种情况中,服务驱动将返回一个成功完成的消息,但实际并不运转。一个实例便是,应用程序请求开启存折打印机的控制指示灯,服务驱动认可此命令,但由于存折打印机的管理不包括这个指示灯,服务驱动将不运做,并给用程序传回一个成功完成申请的消息。

? XFS指定书为服务驱动的类别定义了性能要求,然而厂商的特定服务工具却不支持它,而且不受支持的性能不被考虑为此服务的基本性能。在此种情况中,服务驱动将返回一个成功完成的消息,但实际并不运转。一个实例便是,应用程序请求现金取款器分配硬币,服务驱动认可此命令,但由于现金取款器只能管理钞票取款,则将返回此请求为错误。

? XFS指定书没有为服务驱动的类别定义性能要求。在此种情况中,将给发出调用的应用程序传回一个WFS_ERR_INVALID_COMMAND错误代码。

此种设计允许服务能在一定的范围内使用应用程序,为它们的服务类型所定义的函数提供不同的子集。应用程序能够使用WFSGetInfo 和 WFSAsyncGetInfo命令来查询它将使用的服务的性能,并相应地对自己的动作做出调整;或者它们可使用函数,然后再对返回的WFS_ERR_UNSUPP_COMMAND错误代码做出相应处理,从而决定如何使用此服务。

第8页

CWA 15748-4:2008

2. ID卡读写器

该章描述了普通ID读卡器/写卡器SP(IDC)的功能。这些描述包括可以发出的SP特别命令的定义,使用WFSAsyncExecute,WFSExecute, WFSGetInfo 和WFSAsyncGetInfo函数。 SP允许以下类别设备的操作: ? 电动式读卡器/写卡器

? 插卡式读卡器(只有部分包括写能力) ? 刷卡式读卡器

? 非接触芯片卡读卡器

? 永久芯片读卡器 (可以通过特别的逻辑服务器进入每一个芯片))

如下磁道/芯片及相应的国际标准也考虑在内: ? Track 1 ? Track 2 ? Track 3 ? Front Track 1 ? 水印 ? 芯片(接触的)

ISO 7811 ISO 7811

ISO 7811 / ISO 4909 (JIS II) 日本 瑞典 ISO 7816

? 芯片 (非接触的)ISO 10536. 的)

如法国的国家标准不被考虑在内,但是通过一个窗体机构,能轻易的将其包括在内(参见第七章,表单定义)

除了上述的纯粹的磁道读取外,通过此服务能使用安全盒式的安全套件,来检查用于操作的可写磁道的数据。此安全套件(例如CIM 或 MM)是配备有传感器的读卡器,能够检测卡片上其它的信息,并且与磁道数据做比较。

当SP控制一个永久链接芯片卡时, WFS_ERR_UNSUPP_COMMAN将会返回给除了WFS_INF_IDC_STATUS, WFS_INF_IDC_CAPABILITIES, WFS_CMD_IDC_CHIP_POWER, WFS_CMD_IDC_CHP_IO 和 WFS_CMD_IDC_RESET之外的所有命令。

以下内容定义了EMV应用程序的角色和职责:

? EMV Level 2的交互作用的处理在XFS API 以上

? EMV Level 1 的交互作用的处理在XFS API 以下

第9页

CWA 15748-4:2008

3. 参考资料

1. XFS应用编程接口( API ) /服务提供商接口( SPI ) ,程序员参考 修订版本3.10

第10页

CWA 15748-4:2008

4. 信息命令

4.1 WFS_INF_IDC_STATUS

描述 此命令获取可获得的全部可用信息,包括服务提供者SP或安全模块(如果有)提供的信

息。此外,电动式读卡器/写卡器还可获取已吞卡数信息(针对其它类读卡器,该数总是置为零)。

输入参数

无。

输出参数 LPWFSIDCSTATUS lpStatus;

typedef struct _wfs_idc_status

{ WORD fwDevice; WORD fwMedia; WORD fwRetainBin; WORD fwSecurity; USHORT usCards; WORD fwChipPower; LPSTR lpszExtra; DWORD dwGuidLights[WFS_IDC_GUIDLIGHTS_SIZE]; WORD fwChipModule; WORD fwMagReadModule; WORD fwMagWriteModule; WORD fwFrontImageModule; WORD fwBackImageModule; WORD wDevicePosition; USHORT usPowerSaveRecoveryTime; } WFSIDCSTATUS, *LPWFSIDCSTATUS;

fwDevice

指定读卡器的状态,是以下值之一:

值 意义

WFS_IDC_DEVONLINE 读卡器正常。读卡器存在,并通电,处于在线状态(也就是说,是可运行的,没有忙于处理请求或者处于故障状态。)

WFS_IDC_DEVOFFLINE 读卡器脱机 (例如: 操作员关闭了读卡

器开关或者是拔出读卡器电源)。

WFS_IDC_DEVPOWEROFF 读卡器未通电源或未进行实际上的连接 WFS_IDC_DEVNODEVICE 无此读卡器,例如:自助读卡器未安装

读卡器或没有配置该读卡器。

WFS_IDC_DEVHWERROR 读卡器存在,但是由于硬件故障导致读卡器不可使用。 WFS_IDC_DEVUSERERROR 该读卡器存在,但是有人阻止该项适当

的读卡器操作。该应用程序应该延迟读卡器的操作或者将该服务从读卡器中移除,直到SP产生一个读卡器状态改变的事件,表明读卡器的状态已经改变,例如错误已经被移除(WFS_IDC_DEVONLINE)或者发生了永久的错误(WFS_IDC_DEVHWERROR)。 WFS_IDC_DEVBUSY 读卡器处于忙碌状态,此时不能运行

一个执行命令。

WFS_IDC_DEVFRAUDATTEMPT 读卡器存在,但是探测出了欺诈企图..

fwMedia

指定读卡器内卡的状态,是以下值之一: 值

WFS_IDC_MEDIAPRESENT

第11页

CWA 15748-4:2008

WFS_IDC_MEDIANOTPRESENT WFS_IDC_MEDIAJAMMED WFS_IDC_MEDIANOTSUPP WFS_IDC_MEDIAUNKNOWN

WFS_IDC_MEDIAENTERING WFS_IDC_MEDIALATCHED

意义

卡在读卡器内,不是在入卡口,也未被读卡器夹住。在直插式读卡器中,该值表明卡存在于读卡器之中,卡未被锁定。

卡不在读卡器内,也不在入卡口。 卡被夹住,需要操作员的干预。 卡状态不支持(例如刷卡式读卡器). 卡的状态未知 (例如fwDevice值是WFS_IDC_DEVNODEVICE, WFS_IDC_DEVPOWEROFF, WFS_IDC_DEVOFFLINE, 或 WFS_IDC_DEVHWERROR).

卡位于电动式读卡器的入卡口位置。. 卡存在并被锁定。这表示可对卡的芯片进行操作。

fwRetainBin

指定读卡器内回收盒的状态,可以是以下值之一: 值

WFS_IDC_RETAINBINOK WFS_IDC_RETAINNOTSUPP WFS_IDC_RETAINBINFULL WFS_IDC_RETAINBINHIGH WFS_IDC_RETAINBINMISSING

意义

读卡器的回收盒未满。读卡器不支持回收卡功能

读卡器的回收盒已满。 读卡器的回收盒将满。 读卡器的回收盒丢失。

fwSecurity

指定读卡器内安全单元的状态,可以是以下值之一: 值

WFS_IDC_SECNOTSUPP WFS_IDC_SECNOTREADY

意义

没有可用的安全单元。 安全单元还未做好准备去处理卡 或者它是不可操作的。 安全单元已打开并可操作.

WFS_IDC_SECOPEN

usCards

吞卡数,它只适用于电动式读卡器,针对非电动式读卡器该值为0。该值一直被保持直到被WFS_CMD_IDC_RESET_COUNT命令设置为0。

fwChipPower

指定读卡器内该读卡器所控制的IC芯片的状态。依赖于WFS_INF_IDC_CAPABILITIES结构中的fwType值,这既可以是当前插入的用户卡上的IC芯片,也可以是读卡器内安装的芯片卡上的芯片。芯片的状态可以是以下标志:

第12页 CWA 15748-4:2008

WFS_IDC_CHIPONLINE WFS_IDC_CHIPPOWEREDOFF WFS_IDC_CHIPBUSY WFS_IDC_CHIPNODEVICE WFS_IDC_CHIPHWERROR WFS_IDC_CHIPNOCARD WFS_IDC_CHIPNOTSUPP WFS_IDC_CHIPUNKNOWN

意义

芯片存在,并通电,处于在线状态(也 就是说,是可运行的,没有忙于处理请求或者出于错误的状态。).

芯片存在,未通电(也就是没有连接)。 芯片存在,并通电,但处于忙碌的状态 (此时不能处理执行命令)。

卡在读卡器之中,但是卡上没有芯片。 芯片存在,但是由于硬件出错该芯片不可使用(例如:MUTE,如果在读卡器内有一个无答复的卡)。 读卡器中没有IC芯片。

读卡器不支持报告芯片状态。 芯片的状态未知。

lpszExtra 指针指向厂商提供的特定信息或其它扩展信息。这些信息以“关键字=值”形式字符串提供,这样就容易通过SP进行扩展了。每个字符串都是以NULL结尾,而最后的字符串是以两个NULL来结尾的。指向一个NULL或两个连续的NULL都表示该字段指针为空。 .

dwGuidLights [...] 指定指示灯的状态。一些指示灯的类型定义如下。厂商特定的指示灯在数组未尾开始定义。最大的指示灯数由WFS_IDC_GUIDLIGHTS_MAX定义。 指示灯的状态或者是为WFS_IDC_GUIDANCE_NOT_AVAILABLE及 WFS_IDC_GUIDANCE_OFF或者是由以下标志的组合组成B型或者C型。 值 意义 类型 WFS_IDC_GUIDANCE_NOT_AVAILABL不可用状态 A WFS_IDC_GUIDANCE_OFF 处于关闭状态 A E

WFS_IDC_GUIDANCE_SLOW_FLASH 在慢速闪动 B WFS_IDC_GUIDANCE_MEDIUM_FLASH 灯以中速闪动 B

频率.

WFS_IDC_GUIDANCE_QUICK_FLASH 灯以快速闪动 B WFS_IDC_GUIDANCE_CONTINUOUS 灯处于常亮状态 B

持续 (稳定的).

WFS_IDC_GUIDANCE_RED 灯是红色. C WFS_IDC_GUIDANCE_GREEN T灯是绿色 C WFS_IDC_GUIDANCE_YELLOW 灯是黄色 C WFS_IDC_GUIDANCE_BLUE 灯是蓝色 C WFS_IDC_GUIDANCE_CYAN 灯是蓝绿色 C WFS_IDC_GUIDANCE_MAGENTA 灯是红紫色 C WFS_IDC_GUIDANCE_WHITE 灯是白色 C dwGuidLights [WFS_IDC_GUIDANCE_CARDUNIT] 指定读卡器上指示灯的状态。 fwChipModule

指定芯片模块的状态,是以下值之一: 值

WFS_IDC_CHIPMODOK WFS_IDC_CHIPMODINOP

WFS_IDC_CHIPMODUNKNOWN

意义

芯片模块处于良好的状态。芯片模块不可用。 芯片模块的状态不能确定。

第13页

CWA 15748-4:2008

WFS_IDC_CHIPMODNOTSUPP fwMagReadModule

指定读磁模块的状态是以下值之一。 值

WFS_IDC_MAGMODOK WFS_IDC_MAGMODINOP

WFS_IDC_MAGMODUNKNOWN WFS_IDC_MAGMODNOTSUPP fwMagWriteModule

指定写磁模块的状态是以下值之一。 值

WFS_IDC_MAGMODOK WFS_IDC_MAGMODINOP

WFS_IDC_MAGMODUNKNOWN WFS_IDC_MAGMODNOTSUPP

报告芯片模块的状态不支持。

意义

读磁模块处于良好的状态。 读磁模块不可用。

读磁模块的状态不能确定。 报告磁.模块的状态不支持。

意义

写磁模块处于良好的状态。 写磁模块不可用。

写磁模块的状态不能确定。 报告写磁.模块的状态不支持。

fwFrontImageModule

指定读卡器正面图像读取模块的状态,是以下值之一:

值 意义 WFS_IDC_IMGMODOK 正面图像读取模块处于良好的状态。. WFS_IDC_IMGMODINOP 正面图像读取模块不可用。 WFS_IDC_IMGMODUNKNOWN 正面图像读取模块的状态不能确定。 WFS_IDC_IMGMODNOTSUPP 报告正面图像读取模块的状态不支持。 fwBackImageModule

指定读卡器背面图像读取模块的状态,是以下值之一:

WFS_IDC_IMGMODOK WFS_IDC_IMGMODINOP

WFS_IDC_IMGMODUNKNOWN WFS_IDC_IMGMODNOTSUPP

意义

背面图像读取模块处于良好的状态。. 背面图像读取模块不可用。

背面图像读取模块的状态不能确定。 报告背面图像读取模块的状态不支持。

wDevicePosition

指定读卡器的位置。读卡器的位置不是依赖于fwDevice 值,例如当读卡器位置被报告为WFS_IDC_DEVICENOTINPOSITION时,fwDevice 值可以是以上定义的任一值(包括WFS_IDC_DEVONLINE或 WFS_IDC_DEVOFFLINE)。如果该读卡器没有处于正常的操作位置的话(也就是WFS_IDC_DEVICEINPOSITION),那么卡就不会通过正常的客户接口呈现。 是以下值之一。

第14页 CWA 15748-4:2008

错误代码 注释

意义

WFS_IDC_DEVICEINPOSITION 读卡器处于正常操作位置,或者被固定在某一位置或者不能被移动。 WFS_IDC_DEVICENOTINPOSITION 读卡器被从它的正常操作位置移走。

WFS_IDC_DEVICEPOSUNKNOWN

由于硬件错误或者其它的情况,读卡器的位置不能确定。

WFS_IDC_DEVICEPOSNOTSUPP

实际设置没有能力检测其位置。

usPowerSaveRecoveryTime

指定读卡器从目前节电状态恢复到正常状态所需要的实际秒数。如果节电模式未被激活或者是不支持节电控制,那么该值为零。

只有[Ref. 1]中定义的一般的错误代码才能由该命令产生。

要求或者期待特殊信息出现在lpszExtra 参数上的应用程序可能不是读卡器或者不依赖

厂商。

如果fwDevice字段表明读卡器依旧是可用的(也就是WFS_IDC_DEVONLINE),即使详细读卡器状态中的一个字段((fwSecurity, fwChipModule, fwMagReadModule 或 fwMagWriteModule)表明一个或多个模块除了问题。在这种情况下,只能使用确实无问题的模块的函数。 在与读卡器失去联络的情况下,fwDevice 信息组会报告出WFS_IDC_DEVPOWEROFF(在读卡器未被移除的情况下)或者是WFS_IDC_DEVHWERROR(如果意外失去联络)。所有其它的信息组应该包括一个基于以下原则或优先权的值。 1. 报告该值为未知值

2. 报告该值为普通的h/w错误 3. 报告该值为最后为人所知的值

第15页

CWA 15748-4:2008

4.2 WFS_INF_IDC_CAPABILITIES

描述 输入参数

该命令是用来获取读卡器的性能。 无

输出参数 LPWFSIDCCAPS lpCaps;

typedef struct _wfs_idc_caps

{ WORD wClass; WORD fwType; BOOL bCompound; WORD fwReadTracks; WORD fwWriteTracks; WORD fwChipProtocols; USHORT usCards; WORD fwSecType; WORD fwPowerOnOption; WORD fwPowerOffOption; BOOL bFluxSensorProgrammable; BOOL bReadWriteAccessFollowingEject; WORD fwWriteMode; WORD fwChipPower; LPSTR lpszExtra; WORD fwDIPMode; LPWORD lpwMemoryChipProtocols; DWORD dwGuidLights[WFS_IDC_GUIDLIGHTS_SIZE]; WORD fwEjectPosition; BOOL bPowerSaveControl; } WFSIDCCAPS, *LPWFSIDCCAPS;

wClass

指定逻辑服务类是WFS_SERVICE_CLASS_IDC。 fwType

指定读卡器的类型,可以是以下值: 值 WFS_IDC_TYPEMOTOR WFS_IDC_TYPESWIPE WFS_IDC_TYPEDIP

WFS_IDC_TYPECONTACTLESS WFS_IDC_TYPELATCHEDDIP

意义 读卡器是一个电动式读卡器。读卡器是一个插卡式读卡器。

读卡器是一个刷卡式读卡器。刷卡式读卡器不可能锁住插入的卡。

读卡器是一个非接触读卡器,也就是说不需要插入卡。

读卡器是一个锁定直列式读卡器。当支持IC芯片通信的时候,可锁定卡,以保证在IC芯片通信时,客户不能将卡移走。当请求激活一个芯片时(通过

WFS_CMD_IDC_READ_RAW_DATA命令),任何插入的卡都会被自动锁定。 .

读卡器使用一种永久的荷载的芯片卡(使用这种类型的卡,可以不需要用户的交互作用)。

WFS_IDC_TYPEPERMANENT

bCompound

指定读卡器是不是复合读卡器的一部分。

fwReadTracks

指定读卡器可以读取的磁道,可以是如下标志的一个或多个:

第16页 CWA 15748-4:2008

WFS_IDC_NOTSUPP WFS_IDC_TRACK1 WFS_IDC_TRACK2 WFS_IDC_TRACK3 WFS_IDC_TRACK_WM

WFS_IDC_FRONT_TRACK_1 WFS_IDC_FRONTIMAGE

WFS_IDC_BACKIMAGE

意义

读卡器不支持读磁道。 读卡器可以读磁道1. 读卡器可以读磁道2. 读卡器可以读磁道3. 读卡器可以读瑞典的水印数据。 读卡器可以读前磁道1.

在某些国家该磁道被称为JIS II track. 读卡器可以读取卡的正面图像。

读卡器可以读取卡的背面图像。

fwWriteTracks

指定读卡器可以写入的磁道(可以是fwReadTracks 中描述的除了WFS_IDC_TRACK_WM 之外的标志中的一个或多个。)

fwChipProtocols

指定读卡器支持的IC芯片协议,可以是如下标志的一个或多个:

Value 意义 WFS_IDC_NOTSUPP 读卡器不支持IC芯片协议 WFS_IDC_CHIPT0 读卡器支持T=0协议 WFS_IDC_CHIPT1 读卡器支持T=1协议

WFS_IDC_CHIP_PROTOCOL_NOT_REQUIRED 读卡器不需要应用程序来设置协议

而可以与芯片卡通信 usCards

指定回收盒可以容纳的最大卡张数(如果不可用则为0)。 fwSecType

指定安全单元的类型,可以是以下值之一: Value

WFS_IDC_SECNOTSUPP WFS_IDC_SECMMBOX WFS_IDC_SECCIM86

意义

读卡器没有安全单元。 读卡器的安全单元是MMBox。读卡器的安全单元是CIM86。

fwPowerOnOption

指定读卡器开电时对卡的操作,可以是以下值之一(只适用于电动式读卡器): Value

WFS_IDC_NOACTION WFS_IDC_EJECT

WFS_IDC_RETAIN

WFS_IDC_EJECTTHENRETAIN

意义

开电时不对卡操作,保持原来的位置。 开电(断电) 时卡被退到入卡口(或断电时对卡的操作,请参见下边的fwPowerOffOption ) 开电(断电) 时卡被回收. 开电(断电) 时卡被退到入卡口,在厂商规定的时间内卡没有被取走,卡将被回收。 开电(断电) 时卡被移至读卡位置。

WFS_IDC_READPOSITION

fwPowerOffOption

指定读卡器断电时对卡的操作,同fwPowerOnOption标志,这只适用于电动式读卡器。

第17页

CWA 15748-4:2008

bFluxSensorProgrammable

指定读卡器上的磁通感应器是否是可用的,该值可能是TRUE或FALSE。 bReadWriteAccessFollowingEject

指定读卡器在执行退卡命令将卡退到取卡口时,是否可以将卡重新吸入进行读卡或者写卡。 fwWriteMode

指定读卡器是否支持写磁道,是否支持写低磁磁道和/或高磁磁道:可以是如下标志的一个或多个。 值 意义 WFS_IDC_NOTSUPP 不支持写磁道。 WFS_IDC_LOCO 支持写低磁磁道。 WFS_IDC_HICO 支持写高磁磁道。 WFS_IDC_AUTO SP自动检测确定是写高磁磁道还是

低磁磁道。. fwChipPower

指定读卡器是否支持对IC卡芯片加电复位(或相关固定IC芯片),可以是如下标志的一个或多个:

WFS_IDC_NOTSUPP

WFS_IDC_CHIPPOWERCOLD WFS_IDC_CHIPPOWERWARM WFS_IDC_CHIPPOWEROFF

意义

读卡器不支持对IC卡芯片加电复位。 读卡器支持对IC卡芯片加电复位(冷复位)。

读卡器支持对IC卡芯片复位 (热复位)。 读卡器支持对IC卡芯片掉电。

lpszExtra

指针指向厂商提供的特定信息或其它扩展信息。这些信息以“关键字=值”形式字符串提供,这样就容易通过SP进行扩展了。每个字符串都是以NULL结尾,而最后的字符串是以两个NULL来结尾的。指向一个NULL或两个连续的NULL都表示该字段指针为空。 fwDIPMode

指定刷卡式读卡器是否能在出口或入口读取磁道上的数据,可以是以下标志之一: Value WFS_IDC_NOTSUPP WFS_IDC_DIP_EXIT WFS_IDC_DIP_ENTRY

WFS_IDC_DIP_ENTRY_EXIT WFS_IDC_DIP_UNKNOWN

意义 非刷卡式读卡器。. 只能在出口读取磁道数据。 只能在入口读取磁道数据。

在出口和入口均可读取磁道数据。 未知在卡口或入口是否可读取磁道数据。

lpwMemoryChipProtocols

指针指向一组NULL结束的数组,该数组值为常量,用来指定SP支持的内存卡协议。如果指针指向NULL,SP不支持任何记忆卡协议。有效的记忆卡标识符如下所示: Value

WFS_IDC_MEM_SIEMENS4442 WFS_IDC_MEM_GPM896

意义

读卡器支持西门子的4442卡协议(也受Gemplus GPM2K卡的支持)

该协议支持 Gemplus GPM 896卡协议。

.

第18页

CWA 15748-4:2008

错误代码 注释

dwGuidLights [...]

指定哪个指示灯是可用的。一些指示灯的类别定义如下。厂商特定的指示灯在数组未尾开始定义。最大指示灯命令是WFS_IDC_GUIDLIGHTS_MAX。 该数组的单元被定义为以下标志的组合,可以是如下标志的一个或多个,且标明所有可能的闪存率(B型)和颜色(C型),而闪存率和颜色是指示灯能够处理的。如果指示灯仅仅支持一种颜色的话,就没有C型值返回。WFS_IDC_GUIDANCE_NOT_AVAILABLE值表明读卡器没有指示灯或者是读卡器直接控制该灯而不是由应用程序来控制。 值 意义

类型

WFS_IDC_GUIDANCE_NOT_AVAILABL E

在该位置没有可用的指示A

WFS_IDC_GUIDANCE_OFF

灯控制。B WFS_IDC_GUIDANCE_SLOW_FLASH 灯可能是关闭的。

B WFS_IDC_GUIDANCE_MEDIUM_FLASH 等可以慢速闪动。 B

灯可以中速闪动

WFS_IDC_GUIDANCE_QUICK_FLASH 频率.

WFS_IDC_GUIDANCE_CONTINUOUS 灯可以快速闪动

B 灯可以持续亮着(稳定状态)。 B WFS_IDC_GUIDANCE_RED WFS_IDC_GUIDANCE_GREEN 灯可以说红色的 C WFS_IDC_GUIDANCE_YELLOW T灯是绿色 C WFS_IDC_GUIDANCE_BLUE 灯是黄色 C WFS_IDC_GUIDANCE_CYAN

灯是蓝色 C WFS_IDC_GUIDANCE_MAGENTA 灯是蓝绿色 C WFS_IDC_GUIDANCE_WHITE

灯是红紫色 C 灯是白色

C

dwGuidLights [WFS_IDC_GUIDANCE_CARDUNIT] 指定读卡器上的指示灯是否是可用的 fwEjectPosition

指定读卡器支持的退卡操作的目标位置,可以是如下标志的一个或多个: Value

意义

WFS_IDC_EXITPOSITION 读卡器可将卡退出到卡口位置,用户可从此处取走卡。.

WFS_IDC_TRANSPORTPOSITION

读卡器可将卡退到卡口位置后边的传送通道。用户不能从此处取走卡。支持该标志的读卡器必须支持

bPowerSaveControl

WFS_IDC_EXITPOSITION 标志。 指定读卡器是否支持节电控制模式。如果支持的话该值为TRUE如果不支持的话该值为FALSE。 该命令只会产生那些只有在[Ref. 1]中定义的普通的错误代码。

要求或者期望特殊的信息出现在lpszExtra参数中的应用程序不依赖读卡器或者厂商。

第19页

CWA 15748-4:2008

4.3 WFS_INF_IDC_FORM_LIST

描述

此命令用来获取读卡器支持的表单 无

输入参数

输出参数 LPSTR lpszFormList;

错误代码 注释

lpszFormList

指针指向一组以NULL结束的表单名称字符串,最后一个表单名称字符串以两个NULL结束。 该命令只会产生那些只有在[Ref. 1]中定义的普通的错误代码。. 无

第20页

CWA 15748-4:2008

4.4 WFS_INF_IDC_QUERY_FORM

描述 输入参数

该命令用来获取指定表单名的详细内容。 LPSTR lpszFormName;

lpszFormName

指针指向以NULL结束的表单名称字符串。

输出参数 LPWFSIDCFORM lpForm;

错误代码

注释

typedef struct _wfs_idc_form

{

LPSTR lpszFormName; char cFieldSeparatorTrack1; char cFieldSeparatorTrack2; char cFieldSeparatorTrack3; WORD fwAction; LPSTR lpszTracks; BOOL bSecure; LPSTR lpszTrack1Fields; LPSTR lpszTrack2Fields; LPSTR lpszTrack3Fields; } WFSIDCFORM, *LPWFSIDCFORM;

lpszFormName

指定NULL结束的表单名称字符串。

cFieldSeparatorTrack1

指定Track1的字段分隔符的值。 cFieldSeparatorTrack2

指定Track2的字段分隔符的值。 cFieldSeparatorTrack3

指定Track3的字段分隔符的值。

fwAction

指定表单的操作,可能是以下标志之一: Value

意义 WFS_IDC_ACTIONREAD 读卡。WFS_IDC_ACTIONWRITE 写卡。

lpszTracks

指定读卡的算法或者要写的磁道。 bSecure

指定是否进行安全检查。

lpszTrack1Fields

指针指向NULL结束的Track 1字段名清单,最后一个名称以两个NULL字符结束。 lpszTrack2Fields

指针指向NULL结束的Track 2字段名清单,最后一个名称以两个NULL字符结束。 lpszTrack3Fields

指针指向NULL结束的Track 3字段名清单,最后一个名称以两个NULL字符结束。 除了[Ref. 1]中定义的普通的错误外, 该命令也会出现以下错误代码: 值

意义

WFS_ERR_IDC_FORMNOTFOUND 不能找到指定的表单。WFS_ERR_IDC_FORMINVALID

指定表单无效。

无。

第21页

CWA 15748-4:2008

4.5 WFS_INF_IDC_QUERY_IFM_IDENTIFIER

描述

该命令是用于撤回全部的注册授权接口模块(IFM)识别符。主要的注册授权是EMVCo,但是也有其它的组织也支持,为的是历史的或者当地国家需要。 将来可能会增加新的注册授权,因此应用程序应该能够处理返回的新(还未定义的)的IFM识别符。 无

输入参数

输出参数 LPWFSIDCIFMIDENTIFIER *lppIFMIdentifier;

错误代码 注释

指针指向以NULL结尾的数据结构指针数组。SP支持的每一IFM识别符对应的数组元素(没有特殊的命令)。如果针对一个规定的IFM机构来说却没有IFM识别符的话,那么该局不会收到任何数组元素。如果读卡器没有IFM识别符的话,那么输出参数lppIFMIdentifier将会是NULL。 typedef struct _wfs_idc_ifm_identifier

{ WORD wIFMAuthority; LPSTR lpszIFMIdentifier;

} WFSIDCIFMIDENTIFIER, *LPWFSIDCIFMIDENTIFIER;

wIFMAuthority

指定IFM当局颁发的IFM识别符: Value

意义

WFS_IDC_IFMEMV EMVCo 编制的Level 1 型核准的 IFM 识别符 。

WFS_IDC_IFMEUROPAY Europay 编制的Level 1 型核准的 IFM 识别符 。

WFS_IDC_IFMVISA VISA 编制的Level 1 型核准的 IFM 识别符 。

WFS_IDC_IFMGIECB

GIE CartesBancaires编制的IFM识别符 。

返回一个包含由指定当局分配的芯片读卡器(或IFM)的IFM识别符的ASCII字符串。 该命令只会产生那些只有在[Ref. 1]中定义的普通的错误代码。.

如果该命令不受支持的话,并不是一定意味着该读卡器未被一个或多个专利局认可。

第22页

CWA 15748-4:2008

5. 执行命令

5.1 WFS_CMD_IDC_READ_TRACK

描述

输入参数

输出参数

错误代码

针对电动式读卡器,读卡器检查卡是否插入。如果插入的话,在lpstrFormsName 参数指定的磁道会立即读出。如果没有插入卡,包括所有其它种类的读卡器,在令中所指定的超时时间段内,等待插入或者刷卡(参见第七章,表单定义,对表单有一个WFSExecute命较为详细的描述)。当相关表单中指定了SECURE标志时,通过安全模式(也就是,MM,CIM86)的结果被确定并被加入磁道数据。

当读卡器内没卡时且读卡器准备好接收卡,会产生WFS_EXEE_IDC_INSERTCARD事件。 如果安检失败的话,或者不能执行安全检查的话,将会返回错误这无论如何都不会停止有效数据的返回。WFS_ERR_IDC_SECURITYFAIL如果表单规定安检数据只读,在其它的所有情况中,将会返回WFS_IDC_SEC_HWERRORWFS_SUCCESS,输出参数的安全字段被设定为相关的值,包括

。 针对非电动式读卡器的读卡器(它是在卡入口读取磁道数据)来说,当要求

WFS_CMD_IDC_READ_RAW_DATAWFS_ERR_INVALID_DATA错误代码。既读取磁道的数据又读取芯片的数据时,会返回 LPSTR lpstrFormName;

lpstrFormName

指向定义读取磁道数据行为的表单名(参见第七章,表单的定义)。 LPSTR lpstrTrackData;

lpstrTrackData

成功读取选定磁道的数据(以及安全模式值,如果可行的话)。 除了[Ref. 1]中定义的普通的错误外, 该命令也会出现以下错误代码: 值

意义

WFS_ERR_IDC_MEDIAJAM 卡被夹住,需要操作人员的干预。 WFS_ERR_IDC_SHUTTERFAIL 由于操作失误或者硬件故障,而未能成功打开或关闭卡口,需要操作人员的干预。

WFS_ERR_IDC_INVALIDDATA

由于无效磁道数据而造成,读取规定表单定义的数据失败。这将会被返回,如果所有处于?or? (|) 操作的磁道不能被读取或者任一个处于?and? (&)操作中的磁道不能被读取的话。lpstrTrackData 指向成功读取数据的磁道(如果有的话)。针对每一个不能成功读取数据的轨道来说,都会产生一个WFS_EXEE_IDC_INVALIDTRACKDAT执行事件。参考表单描述中,针对轨道如何规范的规则。 第23页

CWA 15748-4:2008

事件

在完成读取操作之前,卡被移除(产生了WFS_EXEE_IDC_MEDIAINSERTED事件)。针对电动式读卡器来说,读取操作是失效的;也就是说必须发出另外一个命令使得读卡器读取数据。

WFS_ERR_IDC_INVALIDMEDIA 没有发现磁道,插卡或刷卡的方式错误。 WFS_ERR_IDC_FORMNOTFOUND 未能找到指定的表单。 WFS_ERR_IDC_FORMINVALID 指定的表单定义无效 (例如:句法错误) WFS_ERR_IDC_SECURITYFAIL 安全模式没有成功读取卡的安全标识。 WFS_ERR_IDC_CARDTOOSHORT 插入的卡太短。当出现这种错误时,卡依

旧在卡口位置.

WFS_ERR_IDC_CARDTOOLONG 插入的卡太长。当出现这种错误时,卡依

旧在卡口位置。

除了[Ref. 1]中定义的普通的事件外, 该命令也会出现以下事件:

值 意义

WFS_EXEE_IDC_INVALIDTRACKDATA 针对一个空白磁道(没有数据)或者无

效的磁道(磁道数据读取错误或者数据与规定的表单定义不一致)来说都会产生一个事件。

WFS_EXEE_IDC_MEDIAINSERTED 当发现读卡器内有卡时,会产生该事件,提前警告应用程序一个卡的进入,允许它移除一个用户提示符和/或读卡时操作其它的程序。

WFS_SRVE_IDC_MEDIAREMOVED 当读取数据操作完成之前,就移除

了卡,会产生该事件。

WFS_EXEE_IDC_INVALIDMEDIA 用户试图以错误的方向插入卡。读卡器没

有接受该卡。读卡器依旧时刻准备着接受以正确方式插入的卡。

WFS_EXEE_IDC_INSERTCARD 读卡器准备接受来自用户的卡。

WFS_ERR_IDC_NOMEDIA

注释

磁道的关键词可能领先于磁道数据,用?:?隔开。字段数据总是被与之对应的关键词超过,用?=?隔开。用0x00隔开字段。用额外的0x00将不同的磁道隔开。数据的结尾被另外一个0x00隔开(参见下列)。在第七章,表单定义中,定义了数据编码。 lpstrTrackData:例子 TRACK2:ALL=47..\\0\\0TRACK3:MII=59\\0PAN=500..\\0\\0\\0

第24页

CWA 15748-4:2008

5.2 WFS_CMD_IDC_WRITE_TRACK

描述

输入参数

输出参数 错误代码

针对电动式读卡器的读卡器来说,读卡器会检查是否插入了卡。如果是的话,那么数据将会写入由表单里lpstrFormName 参数和其他参数所描述的磁道里。 如果没有插入卡,包括所有其它种类的读卡器,在WFSExecute命令中所指定的超时时间段内,等待插入或者刷卡。然后将表单参数中指定的磁道数据写入相应的磁道(参见第七章,表单定义,对表单有一个较为详细的描述)。 处理之后是数据确认。

当读卡器内没卡时且读卡器准备好接收卡,会产生WFS_EXEE_IDC_INSERTCARD事件。 如果在写卡的过程中停电了,那么操作结果将会是依据厂商的不同而不同,并不能确定写入操作的成功。

LPWFSIDCWRITETRACK lpWriteTrack;

typedef struct _wfs_idc_write_track

{

LPSTR lpstrFormName; LPSTR lpstrTrackData; WORD fwWriteMethod;

} WFSIDCWRITETRACK, *LPWFSIDCWRITETRACK;

lpstrFormName

指向要使用的表单名。 lpstrTrackData

指向表单中要使用的数据。 fwWriteMethod

指明要写的磁道是高磁还是低磁: Value

意义

WFS_IDC_LOCO 写低磁磁道。 WFS_IDC_HICO 写高磁磁道。

WFS_IDC_AUTO

SP决定是写低磁磁道还是高磁磁道

无 除了[Ref. 1]中定义的普通的错误外, 该命令也会出现以下错误代码: Value

意义 WFS_ERR_IDC_MEDIAJAM 卡被夹住,需要操作人员的干预。 WFS_ERR_IDC_SHUTTERFAIL 由于操作失误或者硬件故障,而未能成功打开或关闭卡口,需要操作人员的干预。

WFS_ERR_IDC_NOMEDIA

在完成读取操作之前,卡被移除(产生了WFS_EXEE_IDC_MEDIAINSERTED事件)。针对电动式读卡器来说,读取操作是失效的;也就是说必须发出另外一个命令使得读卡器读取数据。 WFS_ERR_IDC_INVALIDDATA 当写入磁道卡时出现了错误。 WFS_ERR_IDC_DATASYNTAX

lpstrTrackData者与表单定义不一致。 指定的数据语法错误或

第25页

CWA 15748-4:2008

事件

WFS_ERR_IDC_INVALIDMEDIA 没有发现磁道,插卡或刷卡的方式错误。 WFS_ERR_IDC_FORMNOTFOUND 未能找到指定的表单。 WFS_ERR_IDC_FORMINVALID 指定的表单定义无效 (例如:句法错误) WFS_ERR_IDC_WRITE_METHOD fwWriteMethod 值读卡器不支持 WFS_ERR_IDC_CARDTOOSHORT 插入的卡太短。当出现这种错误时,卡

依旧在卡口位置。

WFS_ERR_IDC_CARDTOOLONG 插入的卡太长。当出现这种错误时,卡依

旧在卡口位置。 除了[Ref. 1]中定义的普通的事件外, 该命令也会出现以下事件:

Value 意义

WFS_EXEE_IDC_INVALIDTRACKDATA 针对一个空白磁道(没有数据)或者无

效的磁道(磁道数据读取错误或者数据与规定的表单定义不一致)来说都会产生一个

WFS_EXEE_IDC_MEDIAINSERTED事件。

当发现读卡器内有卡时,会产生该事件,提前警告应用程序一个卡的进入,允许它移除一个用户提示符和/或读卡时操作其它的程序。

WFS_SRVE_IDC_MEDIAREMOVED 当读取数据操作完成之前,就移除了卡,会

产生该事件。

WFS_EXEE_IDC_INVALIDMEDIA 用户试图以错误的方向插入卡。读卡器没

有接受该卡。读卡器依旧时刻准备着接受以正确方式插入的卡。

WFS_EXEE_IDC_INSERTCARD 读卡器准备接受来自用户的卡。

注释

字段数据相对应的关键词总是领先于字段数据,用?=?隔开。关键词可能是表单中定义的字段关键词之一或者预先设定的关键词?ALL?。用0x00隔开字段。用额外的0x00将不同的磁道隔开。缓冲器的结尾被另外一个0x00隔开(参见下列)。该规范意味着,在同一个命令中只能写入一个磁道。但是如果一个读卡器没有写入功能的话,那么将会返回WFS_ERR_UNSUPP_COMMAND 错误。 lpstrTrackData的: RETRYCOUNT=3\\0DATE=3132\\0\\0

第26页

CWA 15748-4:2008

5.3 WFS_CMD_IDC_EJECT_CARD

描述

输入参数

输出参数

错误代码

事件

该命令仅适用于电动式读卡器和锁定卡被退到卡口,在此处,用户可以取走卡。在此命令成功完成之后,当卡取走后会产生dip读卡器。针对电动式读卡器来说,默认操作是,一个服务事件信息以通知应用程序卡被取走。卡在卡口等待被取走,或者是另外一个命针对锁定令移动此卡。dip读卡器来说,该命令使卡解锁(如果还没解锁的话),使之取出。

成功完成该命令后,当卡被取走后会产生一个通知应用程序卡被移走。 WFS_SRVE_IDC_MEDIAREMOVED事件

LPWFSIDCEJECTCARD lpEjectCard;

typedef struct _wfs_idc_eject_card

{ WORD wEjectPosition; } WFSIDCEJECTCARD, *LPWFSIDCEJECTCARD;

wEjectPosition

指定电动式读卡器的卡退出的目的地,可能值如下:

Value

意义

WFS_IDC_EXITPOSITION

卡会被退到卡口,在此处,用户取走了卡。在锁定dip卡的情况下,将会使卡解锁,使之被取出。

WFS_IDC_TRANSPORTPOSITION

卡会被退到位于卡口后的传输通道中。如果已经有一个卡位于该位置,那么将会返回WFS_SUCCESS 。再发另外一个命令WFS_CMD_IDC_EJECT_CARD 把wEjectPosition 设为WFS_IDC_EXITPOSITION ,为的是将卡退给客户,以让用户取走卡。 如果lpEjectCard是NULL指针的话,卡会被退到位于卡口,用户可以从此处取走卡。在卡式多顶dip卡的情况下,该卡会被解锁,以使得该卡可以被取出。这个操作与wEjectPosition所述的WFS_IDC_EXITPOSITION一样。

无。

除了[Ref. 1]中定义的普通的错误外, 该命令也会出现以下错误代码: Value

意义

WFS_ERR_IDC_MEDIAJAM

卡被夹住,需要操作人员的干预。一种可能的情况是在退卡时,试图将卡回收,回收盒已满,不能再吞卡卡。目前的卡依旧位于读卡器中。

WFS_ERR_IDC_SHUTTERFAIL 由于操作失误或者硬件故障,而未能成功打开或关闭卡口,需要操作人员的干预。WFS_ERR_IDC_NOMEDIA

读卡器内无卡。

WFS_ERR_IDC_MEDIARETAINED

在退卡时卡已被吞。

除了[Ref. 1]中定义的普通的事件外, 该命令也会出现以下事件:

第27页

CWA 15748-4:2008

Value 意义 WFS_SRVE_IDC_MEDIAREMOVED 卡被用户取走。WFS_USRE_IDC_RETAINBINTHRESHOLD 回收盒达到极限值。

注释

这是读卡器的一个基本功能。因此如果一个没有退卡功能的读卡器接到了退卡命令的话,将会返回WFS_ERR_UNSUPP_COMMAND 错误。 第28页

CWA 15748-4:2008

5.4 WFS_CMD_IDC_RETAIN_CARD

描述

卡被从当前的位置(读卡位置、卡入口或不确定的位置)回收到回收盒内保存,此功能只适用于电动式读卡器。如果吞卡后吞卡数已达到回收盒的指定吞卡数,读卡器将发送一个事件。如果已经达到指定吞卡数,那么命令将不能执行,返回一个错误,卡依旧吞卡在当前的位置。

输入参数 没有

输出参数 LPWFSIDCRETAINCARD lpRetainCard;

错误代码

事件

注释

typedef struct _wfs_idc_retain_card

{

USHORT usCount; WORD fwPosition;

} WFSIDCRETAINCARD, *LPWFSIDCRETAINCARD;

usCount

从最后一次执行WFS_CMD_IDC_RESET_COUNT命令清除该数后的已吞卡数目。 fwPosition

卡的位置:当卡未被吞时卡可能的位置: Value

意义

WFS_IDC_MEDIAUNKNOWN 卡的位置未知。 WFS_IDC_MEDIAPRESENTWFS_IDC_MEDIAENTERING

卡在读卡器中。卡在卡口.

除了[Ref. 1]中定义的普通的错误外, 该命令也会出现以下错误代码: Value

意义

WFS_ERR_IDC_MEDIAJAM 卡被夹住,需要操作人员的干预。 WFS_ERR_IDC_NOMEDIA 没有插入卡,fwPosition参数的值为WFS_IDC_MEDIAUNKNOWN。

WFS_ERR_IDC_RETAINBINFULL 回收盒已满,不能再吞卡。目前卡还位于读卡器中。 WFS_ERR_IDC_SHUTTERFAIL

由于操作失误或者硬件故障,而未能成功打开或关闭卡口,需要操作人员的干预。

除了[Ref. 1]中定义的普通的事件外, 该命令也会出现以下事件:

Value 意义

WFS_USRE_IDC_RETAINBINTHRESHOLD 吞卡数已达到回收盒指定吞卡数。 WFS_SRVE_IDC_MEDIAREMOVED 用户已经取走了卡。 WFS_EXEE_IDC_MEDIARETAINED 卡已吞。

这是读卡器的一个基本功能。因此如果一个没有吞卡功能的读卡器接到了该请求的话,将会返回WFS_ERR_UNSUPP_COMMAND 错误。 第29页

CWA 15748-4:2008

5.5 WFS_CMD_IDC_RESET_COUNT

描述 输入参数

该命令将吞卡的数目重设为0。该函数只适用于电动式读卡器。

吞卡的数目由SP保存,在重设以前可通过WFS_INF_IDC_STATUS命令获取。 无

注释

输出参数 无 错误代码 事件

该命令只会产生[Ref. 1]中定义的普通的错误。 除了[Ref. 1]中定义的普通的事件外, 该命令也会出现以下事件: Value 意义

WFS_USRE_IDC_RETAINBINTHRESHOLD 回收盒已空.

这是读卡器的一个基本功能。因此如果一个没有吞卡功能的读卡器接到了该请求的话,将会返回WFS_ERR_UNSUPP_COMMAND 错误。 第30页

CWA 15748-4:2008

5.6 WFS_CMD_IDC_SETKEY

描述

输入参数

输出参数

错误代码

事件 注释

该命令是用来设定该命令必须在第一次读卡命令发到读卡器之前执行。DES key,它是操作CIM86模块所必须的。 LPWFSIDCSETKEY lpSetkey;

typedef struct _wfs_idc_setkey{

USHORT usKeyLen; LPBYTE lpbKeyValue;

} WFSIDCSETKEY, *LPWFSIDCSETKEY; usKeyLen

指定以下关键值的长度。

lpbKeyValue

指针指向一个包含CIM86模块DES key的字节数组,该key是由CIM86模块的厂商提供的。无

除了[Ref. 1]中定义的普通的错误外, 该命令也会出现以下错误代码: Value

意义

WFS_ERR_IDC_INVALIDKEY

key不适用于此安全模块。

该命令只产生[Ref. 1]中定义的普通的事件。 没有

第31页

CWA 15748-4:2008

5.7 WFS_CMD_IDC_READ_RAW_DATA

描述

输入参数

输出参数 针对电动式读卡器,读卡器检查是否有卡插入。如果是的话,所有指定的磁道都必须立即读取。如果请求读取IC芯片,IC芯片将被接触加电并复位芯片、ATR(复位应答)数据会被读取,当该命令完成后,芯片将会位于接触位置。该命令也可用于已接触芯片的冷复位。 该命令只能用于用户卡,不能用于永久接触芯片。 如果没有插入卡,包括所有其它种类的读卡器,在内,等待插入或者刷卡。卡插入后将会读取所有指定的磁道数据。WFSExecute命令中所指定的超时时间段

当读卡器内没卡时且读卡器准备好接收卡,会产生WFS_EXEE_IDC_INSERTCARD事件。 磁道的数据从弃。开始或末尾的标记字符不会返回到应用程序。字段分隔符返回到应用程序,且也转换5或7 bit的字符格式转换为8 bit的ASCII格式。5或7 bit磁道字符的校验位被抛成8 bit ASCII形式。

除此之外,可以请求通过安全停止有效数据的返回。如果指定只读校验数据或者校验失败,将会返回

模块(也就是MM,CIM86)的校验。如果校验失败,不会WFS_ERR_IDC_SECURITYFAIL输出参数的安全字段被设定为相关的值,包括错误,在其它的所有情况中,将会返回WFS_IDC_SEC_HWERRORWFS_SUCCESS。 ,如果读卡器是锁定WFS_IDC_CHIPdip读卡器,当读取芯片卡时,读卡器会锁定卡,例如设置了

命令。

(参见下文)。卡会被一直锁定,直到收到WFS_CMD_IDC_EJECT_CARDLPWORD lpwReadData;

lpwReadData

如果 lpwReadData 指向零值,任何已被退出的卡都会返回到读卡器里,但不会读出数据。否则lpwReadData 指定要读取的数据,可以是如下标志的一个或多个。

Value

意义

WFS_IDC_TRACK1 读取Track 1磁道上的数据。 WFS_IDC_TRACK2 读取Track2磁道上的数据。 WFS_IDC_TRACK3 读取Track 3磁道上的数据。 WFS_IDC_CHIP

读取IC芯片的数据。 WFS_IDC_SECURITY

执行安全校验操作。 WFS_IDC_FLUXINACTIVE

如果IDC磁通传感器是可用的话,它将会失效,为的是允许读取卡上的IC芯片数据,而该卡没有磁道。 WFS_IDC_TRACK_WM 读取瑞典水印磁道。 WFS_IDC_MEMORY_CHIP 读取记忆卡。 WFS_IDC_FRONT_TRACK_1 通过装在卡前边的磁道读取Track1的数据。在某些国家,该磁道被称为JIS II track。 WFS_IDC_FRONTIMAGE 卡的正面图像将会以BMP格式读取。 WFS_IDC_BACKIMAGE

卡的背面图像将会以BMP格式读取。

LPWFSIDCCARDDATA *lppCardData;

第32页

CWA 15748-4:2008

lppCardData 指针指向一组以NULL结尾的卡数据结构数组指针,如果没有数据,lppCardData 将会是NULL。

typedef struct _wfs_idc_card_data

{ WORD wDataSource; WORD wStatus; ULONG ulDataLength; LPBYTE lpbData; WORD fwWriteMethod; } WFSIDCCARDDATA, *LPWFSIDCCARDDATA;

wDataSource

指定卡数据的来源可能是以下标志之一: 值

WFS_IDC_TRACK1 WFS_IDC_TRACK2 WFS_IDC_TRACK3 WFS_IDC_CHIP WFS_IDC_SECURITY WFS_IDC_TRACK_WM WFS_IDC_MEMORY_CHIP WFS_IDC_FRONT_TRACK_1 WFS_IDC_FRONTIMAGE WFS_IDC_BACKIMAGE

意义

lpbData 包含有从 track 1读取的数据。 lpbData包含有从 track 2读取的数据。 lpbData包含有从 track 3读取的数据。 lpbData 包含有从芯片读取的ATR数据

lpbData 包含有安全模块返回的值。 lpbData 包含有从瑞典水印磁道读取的数据。 lpbData包含从记忆卡读取的识别数据。 lpbData包含有从front track 1读取的数据。在某些国家,该磁道名为JIS II track。

lpbData包含有BMP卡(卡的正面图像)文件的完全路径和文件名字符串,以NULL结束。

lpbData包含有BMP卡(卡的背面图像)文件的完全路径和文件名字符串,以NULL结束。

wStatus

读取卡数据的状态,可能的值:: 值

WFS_IDC_DATAOK WFS_IDC_DATAMISSING WFS_IDC_DATAINVALID

意义

数据正常。 磁道/芯片/记忆卡芯片数据为空白。

磁道/芯片/记忆卡芯片数据无效。当lpbData报告 WFS_IDC_SEC_BADREADLEVEL或 WFS_IDC_SEC_DATAINVAL时,这通常会被返回。

磁道/芯片/记忆卡芯片数据太长。 磁道/芯片/记忆卡芯片数据太短 SP不支持此数据源格式。

WFS_IDC_DATATOOLONG WFS_IDC_DATATOOSHORT WFS_IDC_DATASRCNOTSUPP

错误代码

第33页

CWA 15748-4:2008

WFS_IDC_DATASRCMISSING

卡数据源丢失,或由于不能被读取而产生硬件错误,或者是模块未被初始化。例如:当要求读取记忆卡数据时,而客户插入一个不带记忆芯片的磁卡,将会返回这个状态。当lpbData 报告

WFS_IDC_SEC_NODATA, WFS_IDC_SEC_NOINIT 或WFS_IDC_SEC_HWERROR时,将会返回这个状态。当图像读卡器由于状态原因或者失败而不能创建BMP文件时,将会返回这个状态。

ulDataLength

指定lpbData的长度。

lpbData

指向从轨道/芯片读取的数据,安全模块返回的值或者以NULL结尾的字符串包含BMP图像文件的全路径和文件名。 安全模块可返回以下值: Value

意义

WFS_IDC_SEC_READLEVEL1 安全数据可读等级是1. WFS_IDC_SEC_READLEVEL2 安全数据可读等级是2. WFS_IDC_SEC_READLEVEL3 安全数据可读等级是3. WFS_IDC_SEC_READLEVEL4 安全数据可读等级是4. WFS_IDC_SEC_READLEVEL5 安全数据可读等级是5. WFS_IDC_SEC_BADREADLEVEL 所读取的安全数据质量不可接受 WFS_IDC_SEC_NODATA 卡上没有安全数据。WFS_IDC_SEC_DATAINVAL 验证安全数据和磁道上的特殊数据未成 功。.

WFS_IDC_SEC_HWERROR 由于硬件错误而不能使用安全模块。 WFS_IDC_SEC_NOINIT

不能使用安全模式由于它没有被激活(例如CIM key没有被装入)。

记忆卡返回的数据中第一个WORD字内容是与卡的通信协议,在此WORD字后面的是其它的实际数据。对可用的记忆卡协议的描述参见WFS_INF_IDC_CAPABILITIES中的lpwMemoryChipProtocols。

fwWriteMethod 该命令忽略。

除了[Ref. 1]中定义的普通的错误外, 该命令也会出现以下错误代码: Value

意义

WFS_ERR_IDC_MEDIAJAM 卡被夹住,需要操作人员的干预。 WFS_ERR_IDC_SHUTTERFAIL

由于操作失误或者硬件故障,而未能成功打开或关闭卡口,需要操作人员的干预。

WFS_ERR_IDC_NOMEDIA

在完成读取操作之前,卡被移除(产生了事件

WFS_EXEE_IDC_MEDIAINSERTED)。针对电动式读卡器来说,读取操作是失效的;也就是说必须发出另外一个命令使得读卡器读取数据。

第34页 CWA 15748-4:2008

WFS_ERR_IDC_INVALIDMEDIA WFS_ERR_IDC_CARDTOOSHORT WFS_ERR_IDC_CARDTOOLONG

事件

WFS_ERR_IDC_SECURITYFAIL

没有发现磁道或IC芯片;插卡或刷卡的方式错误。

插入的卡太短。当出现这种错误时,卡依旧在卡口位置。

插入的卡太长。当出现这种错误时,卡依旧在卡口位置。

安全模式没能成功读取卡的安全标识。

除了[Ref. 1]中定义的普通的事件外, 该命令也会出现以下事件: Value

WFS_EXEE_IDC_MEDIAINSERTED WFS_SRVE_IDC_MEDIAREMOVED WFS_EXEE_IDC_INVALIDMEDIA

WFS_EXEE_IDC_INSERTCARD 注释

无。

意义

当发现读卡器内有卡插入时,会产生该事件,提前警告应用程序一个卡的插入,允许它移除一个用户提示和/或在读卡时进行其它的处理。.

在读卡操作还没完成时,就移除了卡,会产生该事件。

用户试图以错误的方向插入卡。读卡器没有接受该卡。读卡器依旧时刻准备着接受以正确方式插入的卡。

读卡器准备接受来自用户的卡。

第35页

CWA 15748-4:2008

5.8 WFS_CMD_IDC_WRITE_RAW_DATA

描述 针对电动式读卡器,读卡器检查是否已经插入了卡。如果是的话,数据将被写入磁道。

输入参数

输出参数 如果没有插入卡,等待插入或者刷卡。卡插入后将会将数据写入所有指定的磁道。包括所有其它种类的读卡器,在WFSExecute命令中所指定的超时时间段内,

当读卡器内没卡时且读卡器准备好接收卡,会产生WFS_EXEE_IDC_INSERTCARD事件。

应用程序必须将磁道数据转换成ASCII编码且不能有起始字符,SP转换此数据(参见WFS_CMD_IDC_READ_RAW_DATAWFS_ERR_INVALID_DATA错误。

)。如果传的数据太长的话,会返回该处理之后是数据校验。

如果在写数据时电源断电的话,操作的结果将会依据厂商的不同而不同,并不能保证写卡成功。

LPWFSIDCCARDDATA *lppCardData; 指向NULL结束的指针数组:

typedef struct _wfs_idc_card_data

{ WORD wDataSource; WORD wStatus; ULONG ulDataLength; LPBYTE lpbData; WORD fwWriteMethod; } WFSIDCCARDDATA, *LPWFSIDCCARDDATA;

wDataSource

指定要写入的数据,是以下值之一: Value

意义

WFS_IDC_TRACK1 lpbData包含写入 track 1的数据。 WFS_IDC_TRACK2 lpbData包含写入 track 2的数据。 WFS_IDC_TRACK3

lpbData包含写入 track 3的数据。.

WFS_IDC_FRONT_TRACK_1

lpbData 包含写入 front track 1的数据。在某些国家,该磁道被称做JIS II track.

wStatus

在该参数中该命令被忽略。 ulDataLength

指定lpbData的长度。 lpbData

指向写入磁道的数据。

fwWriteMethod

指定应该写入高磁磁道还是低磁磁道

Value 意义 WFS_IDC_LOCO 写入低矫顽(磁)力磁道。 WFS_IDC_HICO 写入高矫顽(磁)力磁道。

WFS_IDC_AUTO SP决定是写入高磁磁道还是低磁磁道。

第36页

CWA 15748-4:2008 错误代码 事件

除了[Ref. 1]中定义的普通的错误外, 该命令也会出现以下错误代码: Value 意义 WFS_ERR_IDC_MEDIAJAM 卡被夹住,需要操作人员的干预。 WFS_ERR_IDC_SHUTTERFAIL 由于操作失误或者硬件故障,而未能成

功打开或关闭卡口,需要操作人员的干预。

WFS_ERR_IDC_NOMEDIA 在完成写卡操作之前,卡被移除(产生了

事件

WFS_EXEE_IDC_MEDIAINSERTED)。针对电动式读卡器来说,写入操作是失败的;也就是说必须发出另外一个命令来写数据。

WFS_ERR_IDC_INVALIDMEDIA 没有发现磁道,插卡或刷卡的方式错误。 WFS_ERR_IDC_WRITE_METHOD fwWriteMethod 值与读卡器性能不一致。 WFS_ERR_IDC_CARDTOOSHORT 插入的卡太短。当出现这种错误时,卡

依旧在卡口位置。.

WFS_ERR_IDC_CARDTOOLONG 插入的卡太长。当出现这种错误时,卡

依旧在卡口位置。 除了[Ref. 1]中定义的普通的事件外, 该命令也会出现以下事件: Value

WFS_EXEE_IDC_MEDIAINSERTED

意义 当发现读卡器内有卡插入时,会产生该事件,提前警告应用程序一个卡的插入,允许它移除一个用户提示和/或在写卡时进行其它的处理。

当写卡操作完成之前,就移除了卡,会产生该事件。

用户试图以错误的方向插入卡。读卡器没有接受该卡。读卡器依旧时刻准备着接受以正确方式插入的卡。

读卡器准备接受来自用户的卡。

WFS_SRVE_IDC_MEDIAREMOVED WFS_EXEE_IDC_INVALIDMEDIA

注释

WFS_EXEE_IDC_INSERTCARD

这是读卡器的一个基本功能。因此如果一个没有写卡功能的读卡器接到了写卡请求的话,将会返回WFS_ERR_UNSUPP_COMMAND 错误。

第37页

CWA 15748-4:2008

5.9 WFS_CMD_IDC_CHIP_IO

描述

输入参数

输出参数

错误代码

事件

该命令用于与数据透明地返回应用程序。必须在发出命令之前获取芯片的IC芯片的通信。来自应用程序的透明数据被传送到ATRIC。芯片的芯片,ICATR芯片的返回或者记忆卡识别(如果是可行的话)必须是首先通过用户卡系列重设的WFS_CMD_IDC_READ_RAW_DATA 获取。WFS_CMD_IDC_CHIP_POWER ATR可以通过WFS_CMD_IDC_READ_RAW_DATA 命令或者WFS_CMD_IDC_CHIP_POWER 命令获得。永久接触芯片的获得。 ATR总是通过

LPWFSIDCCHIPIO lpChipIoIn;

typedef struct _wfs_idc_chip_io

{ WORD wChipProtocol; ULONG ulChipDataLength; LPBYTE lpbChipData; } WFSIDCCHIPIO, *LPWFSIDCCHIPIO;

wChipProtocol

指定用来与IC芯片通信协议。可能的值是那些在WFS_INF_IDC_CAPABILITIES 中所描述的值。当与记忆卡通信时,该字段被忽略。SP清楚目前插入的是哪种类型记忆卡,因此应用程序没有必要对此进行管理。

ulChipDataLength

指定lpbChipData的长度。 lpbChipData

该指针指向发给芯片的数据。

LPWFSIDCCHIPIO lpChipIoOut;

typedef struct _wfs_idc_chip_io

{ WORD wChipProtocol; ULONG ulChipDataLength; LPBYTE lpbChipData; } WFSIDCCHIPIO, *LPWFSIDCCHIPIO;

wChipProtocol

指定用来与IC芯片通信协议。该字段的值与输入结构中相对应的字段的值相同。该字段在对记忆卡处理中忽略,并返回WFS_IDC_NOTSUPP。

ulChipDataLength

指定lpbChipData的长度。 lpbChipData

该指针指向IC芯片返回的数据。

除了[Ref. 1]中定义的普通的错误外, 该命令也会出现以下错误代码: 值

意义

WFS_ERR_IDC_MEDIAJAM 卡被夹住,需要操作人员的干预。 WFS_ERR_IDC_NOMEDIA

读卡器内没有卡。 WFS_ERR_IDC_INVALIDMEDIA 没有发现芯片。卡可能被以错误的方式插 入。

WFS_ERR_IDC_INVALIDDATA

当与芯片通信时,出了错。 WFS_ERR_IDC_PROTOCOLNOTSUPP 使用的协议不受SP的支持。 WFS_ERR_IDC_ATRNOTOBTAINED

没有获得ATR数据。

除了[Ref. 1]中定义的普通的事件外, 该命令也会出现以下事件:

第38页

CWA 15748-4:2008

WFS_SRVE_IDC_MEDIAREMOVED

注释

意义

在对卡操作还没有完成之时,卡被移除,产生该事件。

第39页

CWA 15748-4:2008

5.10 WFS_CMD_IDC_RESET

描述

应用程序执行此命令来对读卡器的硬件进行复位,使读卡状态为正常。该命令不会覆盖由另一个应用程序或服务处理的锁定。

如果读卡器为用户ID卡设备,那么此读卡器将根据lpwResetIn的参数对读卡器中发现的任何用户卡进行吞入、弹出或不进行任何动作。由于硬件问题可能无法根据参数规定将卡吞入或弹出。如果在设备中发现用户卡,则WFS_SRVE_IDC_MEDIADETECTED将通知应用程序卡已被移送至什么位置。如果不指定任何动作,用户卡将无法被移动,即使这将意味着读卡器不能得到恢复。 如果这个设备是一个固定的芯片卡单元,这个命令将关闭芯片。

输入参数

输出参数 错误代码

事件

注释

LPWORD lpwResetIn;

指定对任何读卡器中发现的任何用户卡执行的操作: 值

意义

WFS_IDC_EJECT 弹出所发现的任何卡。 WFS_IDC_RETAIN 吞卡所发现的任何卡。

WFS_IDC_NOACTION

对所发现的任何卡不应执行任何操作。

如果lpwResetIn 是 NULL,SP将会决定将所发现的任何卡移向哪里。

除了[Ref. 1]中定义的普通的错误外, 该命令也会出现以下错误代码: Value

意义

WFS_ERR_IDC_MEDIAJAM 卡被夹住,需要操作人员的干预。 WFS_ERR_IDC_SHUTTERFAIL 读卡器不能成功打开或关闭卡口

WFS_ERR_IDC_RETAINBINFULL

回收盒已满,不能再吞卡卡。目前的卡依旧处于读卡器中。

除了[Ref. 1]中定义的普通的事件外, 该命令也会出现以下事件:

值 意义 WFS_SRVE_IDC_MEDIADETECTED 当在复位时检测到介质,产生此事件。 WFS_SRVE_IDC_MEDIAREMOVEDWFS_USRE_IDC_RETAINBINTHRESHOLD 卡已被用户取走 回收盒达到临界值。 。

第40页

CWA 15748-4:2008

5.11 WFS_CMD_IDC_CHIP_POWER

描述

输入参数

输出参数

错误代码

事件

注释

该命令处理对于用户芯片,此命令只能在通过使用IC芯片可以完成的加电操作 CMD_IDC_READ_RAW_DATA命令第一次连接芯片后使用对于永久性连接芯片卡,只能通过此命令来控制芯片电源。。

LPWORD lpwChipPower;

lpwChipPower

指定要执行的操作,是以下值之一:

意义

WFS_IDC_CHIPPOWERCOLD 芯片加电并复位(冷复位)。 WFS_IDC_CHIPPOWERWARM 芯片复位(热复位)。WFS_IDC_CHIPPOWEROFF

芯片被断电。

NULL or LPWFSIDCCHIPPOWEROUT lpChipPowerOut;

typedef struct _wfs_idc_chip_power_out

{

ULONG ulChipDataLength; LPBYTE lpbChipData;

} WFSIDCCHIPPOWEROUT, *LPWFSIDCCHIPPOWEROUT;

ulChipDataLength

指定以下lpbChipData字段的长度

lpbChipData

指向从芯片返回的复位应答ATR数据,如果动作不是为加电,则为空值。 除了[Ref. 1]中定义的普通的错误外, 该命令也会出现以下错误代码: 值 意义

WFS_ERR_IDC_CHIPPOWERNOTSUPP 不支持指定的操作。 WFS_ERR_IDC_MEDIAJAM 卡被夹住,需要操作人员的干预。 WFS_ERR_IDC_NOMEDIA 读卡器内没有卡。 WFS_ERR_IDC_INVALIDMEDIA 没有发现IC芯片,插卡或刷卡的方式错误 WFS_ERR_IDC_INVALIDDATAWFS_ERR_IDC_ATRNOTOBTAINED 在与芯片通讯时发生一个错误。未获取复位应答ATR(只适用于用户卡 ).

除了[Ref. 1]中定义的普通的事件外, 该命令也会出现以下事件: 值

意义

WFS_SRVE_IDC_MEDIAREMOVED 在操作未完成之前,卡被移除,产生此事件。

提供了输出参数的空返回值以提高向后兼容性。此空返回值仅对用户卡有效。永久芯片必须在输出参数中返回复位应答ATR。用户卡应在输出参数中返回复位应答ATR。

本文来源:https://www.bwwdw.com/article/zdu7.html

Top