私はsmartcardio
を使ってスマートカードを扱うJavaアプリケーションを開発しています。 アプレットを再起動せずにUSBカードリーダーを取り外してからもう一度挿入する必要があります。スマートカード端末の取り外し:SCARD_E_NO_SERVICE CardException
端末の変更を検出するためにterminals()
とwaitForChange()
の方法を使用していますが、Linux、MacOS、Win7では正常に動作しています。
しかし、Windows 8(およびWindows 8のみ)では、最後の端末を削除した後、これらのメソッドはSCARD_E_NO_SERVICE
CardException
を投げて、これ以上の変更は検出されません。
"サービス"が何を話しているのかよく分かりません。しかし、TerminalFactory.getDefault()
にTerminalFactory
シングルトンがあると呼ぶと、これは私のスレッドで開始されたと思います。そして、私はこのシングルトンが下敷きサービスを管理する方法を持っている可能性があり、これが壊れていると思います。
Windows 8でsmartcardio
を使用して端末の切断を管理する方法について、他にも誰かがいますか?
ありがとうございます。私は、PCSCTerminal Mapフィールド "stateMap"もクリアする必要があることを指摘しなければなりません。 – vellotis
私はもはやこれを必要とするプロジェクトでは動作しませんが、私はもっと良い解決策について教えてください:) –
ありがとう@vellotis、私のために働いた。 –