2

スマートカードとの通信には、WINSCARD.DLL を API として使用して APDU コマンドをスマートカードに送信します。いくつかのカードリーダーでは、これは期待どおりに機能していますが、送信するとメソッドから不明な戻り値が返されます ( http://msdn.microsoft.com/en-us/library/ms936965.aspxSCardTransmitにはありません)。コマンドを O2Micro リーダーに送信します。

何が機能していますか: コマンド (16 進数の値) を送信した場合:

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

しかし、そのコマンドでは、データを取得せず、 value を返します0x57

0x57私の質問は、戻り値が何を伝えているのか、そしておそらくそれを解決または回避する方法を誰かが知っているかどうかです。

4

1 に答える 1

4

エラー コードは、winerror.h:の Windowsシステム エラー コードERROR_INVALID_PARAMETERの 1 つです。これはほとんどの場合、APDU に問題がないことを意味しますが、SCardTransmit引数に問題があります。パラメータをよく見ることをお勧めしpbRecvBufferます。警告: 私は SCard 関数を C# ではなく C++ でのみ使用しました。

PC/SC 関数は、標準の Windows エラー コードと PC/SC 固有のエラー コードを返すことができます。呼び出しについて少し注意してくださいFormatMessage。これを使用して、Windows によって提供される定義済みのエラー メッセージを使用して、エラー報告をもう少し一般的にすることができます。

于 2011-08-24T19:14:43.587 に答える