Ich arbeite an einer Java-Anwendung, die smartcardio
verwendet, um mit Smartcard zu arbeiten. Es muss möglich sein, dass man seinen USB-Kartenleser entfernt und dann wieder einführt, ohne das Applet erneut zu starten.Entfernung der Smartcard-Terminals: SCARD_E_NO_SERVICE CardException
Ich verwende die terminals()
und waitForChange()
Methoden, um Terminaländerungen zu erkennen, und es funktioniert gut unter Linux, MacOS und Win7.
Aber auf Windows 8 (und Windows 8 nur) nach dem Entfernen des letzten Terminal, werfen diese Methoden ein SCARD_E_NO_SERVICE
CardException
, und keine weiteren Änderungen erkennen.
Ich bin nicht sicher, worüber "Service" es spricht. Aber ich denke, dass dies in meinem Thread gestartet wird, wenn ich TerminalFactory.getDefault()
anrufen, um einen TerminalFactory
Singleton zu haben. Und ich denke, dass dieser Singleton eine Möglichkeit haben kann, den darunterliegenden Dienst zu verwalten, und das ist, was gebrochen ist.
Hat irgendjemand irgendwelche Hinweise zur Verwaltung der Terminaltrennung mit smartcardio
unter Windows 8?
Danke !. Ich muss darauf hinweisen, dass das PCSCTerminal Map Feld "stateMap" ebenfalls gelöscht werden muss. – vellotis
Ich arbeite nicht mehr an dem Projekt, das dies benötigt, aber ich werde ihnen von dieser besseren Lösung erzählen :) –
Danke @vellotis, so funktioniert für mich. –