大家好,我还有另一个问题要问你:)
我想用协议 t=1 与智能卡通信。我正在使用 Windows 智能卡 api (winscard.dll) 和 C#。我有
用于传输数据的 SCardEstablishContext()、SCardListReaders()、SCardConnect()、SCardStatus()、SCardTransmit()、SCardDisconnect()、SCardReleaseContext() 函数。
我想用下面的代码选择主文件(mf)
SCARD_IO_REQUEST sendreq,recvreq;
byte[] sendbuff = { 0x00, 0xA4, 0x00, 0x00, 0x02, 0x3F, 0x00 };
sendreq.protocol = SCARD_PROTOCOL_T1;
sendreq.pciLength = 8;
recvreq.protocol = SCARD_PROTOCOL_T1;
recvreq.pciLength = 8;
byte[] RecvBuff = new byte[258];
int recvbufflen = 2;
SCardTransmit(hCard, ref sendreq, ref sendbuff[0], sendbuff.Length, ref recvreq, ref RecvBuff[0], ref recvbufflen);
成功任务的响应必须为 9000,但我收到 6A86(无效的 ins 参数)。
我的问题是:
1- 为什么我会收到此回复?
2-如果是,我是否必须使用 pts 命令更改协议,为什么?(该卡只支持t1)
3-协议t = 1帧必须是序言字段+信息字段+结尾字段。但我没有将序言和尾声字节添加到 sendbuff。使用windows api时是否有必要将它们添加到sendbuff?
谢谢..