0

スマートカードアプリケーション(winscard.dllを使用する.net 2)をWindows 7で実行するように更新しています。32ビットでは、わずかな変更のみが必要です。64ビットでは、SCardConnectAを呼び出すときにハングが発生しているように見えます。この場合、SCardConnectAはそのままで、戻りません。スマートカードサービスを停止する/カードを取り外すと、アプリケーションが完了します。

.netアプリは相互運用機能を使用するため、これを除外するために、C++DLLからscardconnectAを呼び出してみましたが同じ結果になりました。これは、TODOSおよびGemaltoデバイスで発生します。これまでのところ、アプリケーションでは、リーダーと明確にセットアップして話し合い、カードの存在を判断しています。

調査方法に関する提案はありますか?ここで適用できるタイムアウト値はありますか?

ありがとう、

デイビーミッチェル

4

4 に答える 4

1

解決策にたどり着くには、それぞれのメーカーと協力する必要があります。何か間違ったことをしたことを確認するためのスニペットを投稿していません。ネイティブプログラムでの動作を再確認したかどうかは疑わしいです。そして、議論を混乱させるいくつかの方法があります。Unicodeバージョンを使用することは、他の誰もがそうであるように、遠いチャンスです。

これは難しい種類のサポートリクエストです。Microsoftとカードベンダーの2つのパーティと協力しているため、お互いに指を向ける傾向があります。迅速な回避策に対する唯一の本当の希望は、ターゲットプラットフォーム設定をx86に設定することにより、アプリを32ビットモードで実行することを強制することです。

于 2010-10-19T15:50:03.743 に答える
1

ほとんどのカードリーダーには、64ビットドライバーと32ビットドライバー用の個別のインストーラーが含まれています-gemaltoは間違いなくこれを行います(異なるアーキテクチャー用の複数のリーダーインストーラーのサンプルページについては、 http://support.gemalto.com/? id = 46を参照してください)。

64ビットOSで64ビットドライバーを使用していることを再確認しましたか?

于 2010-10-19T23:29:39.373 に答える
1
  • SCardConnectの代わりにSCardConnectAを使用するのはなぜですか?
  • SCardConnectがハングしているということは、そのカードを使用して何かを実行している別のアプリケーションがあることを意味している可能性がありますが、そうではないことを確認しますか?
于 2010-10-20T10:21:16.840 に答える
0

私は今解決策を持っています(ここでそれを立ち上げるのに数日かかることをお詫びします)。

64ビットWindows7で動作が変更されたようです。アプリケーションにEndTransactionのないBeginTransactionがあり、これがハングを引き起こしているようです。何らかの理由で、32ビットWindowsはこれを許容していました。

メッセージを残してくださった皆様、ありがとうございました。

デイビーミッチェル

于 2010-11-03T13:51:53.900 に答える