对于与智能卡的通信,我使用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
所说的内容,也许是解决或解决问题的方法。
答案 0 :(得分:3)
您的错误代码是winerror.h的System Error Codes窗口之一:ERROR_INVALID_PARAMETER
。这几乎总是意味着您的APDU正常,但SCardTransmit
参数是问题所在。我建议仔细查看pbRecvBuffer
参数。警告:我只使用C ++的SCard函数,而不是C#。
PC / SC功能可以返回标准窗口错误代码以及PC / SC特定错误代码。请注意有关FormatMessage
调用的信息:您可以使用它来使用Windows提供的预定义错误消息使错误报告更加通用。