2

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

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

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的含义以及如何解决或解决它的方法。

4

1 回答 1

4

您的错误代码是来自 winerror.h:的 Windows系统错误代码ERROR_INVALID_PARAMETER之一。这几乎总是意味着您的 APDU 没问题,但SCardTransmit参数是问题所在。我建议仔细查看pbRecvBuffer参数。警告:我只在 C++ 中使用了 SCard 函数,而不是在 C# 中使用。

PC/SC 函数可以返回标准的 windows 错误代码以及 PC/SC 特定的错误代码。请注意有关FormatMessage调用的一点:您可以使用它来使错误报告更加通用,并使用由 windows 提供的预定义错误消息。

于 2011-08-24T19:14:43.587 回答