嗨,大家我還有其他問題給你:)與協議t1的智能卡通信
我想與協議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(無效插件參數)。
我的問題是:
1-爲什麼我收到此回覆?
2-我是否必須使用pts命令更改協議如果是,爲什麼? (該卡只支持t1)
3-協議t = 1幀必須是序言字段+信息字段+結尾字段。但我不添加序言和epilogue字節sendbuff。是否有必要將它們添加到使用Windows API的sendbuff?
謝謝..
其實P1/P2等於零也是正確的(在意義上符合標準的)聲明任意DF/EF被選中,但是一如既往,沒有牌必須支持它。然而,該命令會產生一個響應(與P2 = 0xC相反),並且由於您沒有提供LE字節,因此該不匹配可能會引發錯誤消息。 6A86不會是我的第一個猜測,但也有一些理由。 – guidot 2013-03-29 11:11:13