マイ プロジェクトの構造
myApp
-->WCFSerLibrary
-->ClassLib1
-->ClassLib2 // This one uses winscard.dll
付属のスマートカードリーダーと通信したかった。
そのために私が従う4つのステップは
- SCardEstablishContext
- SCardListReaders を介してリーダー名を取得する
- Sカードコネクト
- SCardTransmit で読み取る
最初の 3 つのステップは正常に実行されますが、SCardTransmit を実行しようとすると、応答コード87が返されます。
第二に、上記のシナリオは、WCF サービスから呼び出す場合です。現在、Windows FOrm アプリケーションで同じ ClassLib2 を使用しており、適切に通信しています。
retCode = ModWinsCard.SCardTransmit(hCard, ref pioSendRequest, ref SendBuff[0], sendLen, ref pioSendRequest, ref RecvBuff[0], ref recvLen);
ModWinsCard クラスの場合
[DllImport("winscard.dll"l)]
public static extern Int64 SCardTransmit(UInt64 hCard, ref SCARD_IO_REQUEST pioSendRequest, ref byte SendBuff, int SendBuffLen, ref SCARD_IO_REQUEST pioRecvRequest, ref byte RecvBuff, ref int RecvBuffLen);