SCardTransmit()返回空响应缓冲区

时间:2013-06-20 17:31:23

标签: c# .net smartcard cac

使用here描述的框架,我试图从智能卡中读取。我已经建立了一个apdu命令。命令结构似乎是正确的,因为它适用于java。当我调用SCardTransmit()函数时,该命令被执行,但它返回一个长度为Le + 2字节的空响应缓冲区。保存SW1和SW2的前两个字节是6118.我相信这意味着有更多的字节要读入缓冲区。但是,当我更改缓冲区大小时,响应缓冲区大小已更改,但仍然会收到错误代码6118.这是一个select命令,后面跟着get data命令返回状态6100,我认为这意味着有超过0xFF字节还是要读。那么如何让响应缓冲区被填充?

1 个答案:

答案 0 :(得分:1)

所描述的行为与T = 0协议卡匹配。在该协议中,您永远不会直接获得命令响应,但必须发送一个GET RESPONSE命令,其长度在上一个命令的返回码中报告,此处为0x18。