皆さん、こんにちは。別の質問があります:)
プロトコル t=1 で IC カードと通信したい。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 に追加する必要がありますか?
ありがとう..