来自WINSARD.DLL方法的未知响应SC2Transmit在O2Micro阅读器上具有响应长度信息

时间:2011-08-24 10:58:27

标签: c# smartcard apdu pcsc winscard

对于与智能卡的通信,我使用WINSCARD.DLL作为API将APDU命令发送到智能卡。对于几个读卡器,这是按预期工作的,但如果我将命令发送到O2Micro读卡器,我会以某种方式从方法SCardTransmit得到一个未知的返回值(它不在http://msdn.microsoft.com/en-us/library/ms936965.aspx上)。

工作原理: 如果我发送命令(十六进制值):

CLA: 00, INS: A4, P1: 02, P2: 04, Lc: 02, Data: "4401", Le: (not present)

我收到回复SW1: 61. SW2: 1F

响应告诉我有0x1F个字节可用。所以我发送命令:

CLA: 00, INS: A4, P1: 02, P2: 04, Lc: 02, Data: "4401", Le: 1F

但是在该命令中,我没有获得任何数据并返回值0x57

我的问题是,是否有人知道返回值0x57所说的内容,也许是解决或解决问题的方法。

1 个答案:

答案 0 :(得分:3)

您的错误代码是winerror.h的System Error Codes窗口之一:ERROR_INVALID_PARAMETER。这几乎总是意味着您的APDU正常,但SCardTransmit参数是问题所在。我建议仔细查看pbRecvBuffer参数。警告:我只使用C ++的SCard函数,而不是C#。

PC / SC功能可以返回标准窗口错误代码以及PC / SC特定错误代码。请注意有关FormatMessage调用的信息:您可以使用它来使用Windows提供的预定义错误消息使错误报告更加通用。