Debuggen von Smartcardtreibern
Hinweis
Überprüfte Builds waren unter älteren Versionen von Windows verfügbar, bevor Windows 10 Version 1803. Verwenden Sie Tools wie Driver Verifier und GFlags, um den Treibercode in späteren Versionen von Windows zu überprüfen.
Die Smart Karte-Treiberbibliotheken unterstützen mehrere Debugfeatures. Jedes Debugfeature wird durch eine der folgenden Konstanten dargestellt, die in der Headerdatei Smclib.h definiert sind:
DEBUG_IOCTL
DEBUG_ATR
DEBUG_PROTOCOL
DEBUG_DRIVER
DEBUG_TRACE
DEBUG_ERROR
DEBUG_BREAK
DEBUG_ALL
Der kombinierte Satz aktivierter Debugfeatures wird durch einen Wert dargestellt, der als Debugebene bezeichnet wird. Sie können diesen Wert berechnen, indem Sie das bitweise OR der Konstanten verwenden, die den Features entsprechen, die Sie aktivieren möchten.
Es gibt zwei Möglichkeiten, die Debugebene festzulegen. Zunächst können Sie das smart Karte Treibertestprogramm Scdrvtst verwenden, das im Lieferumfang des Windows Driver Kit (WDK) enthalten ist. Die zweite besteht darin, die SmartcardSetDebugLevel smart Karte Treiberbibliotheksroutine zu verwenden.
In beiden Fällen müssen Sie den Wert für die gewünschte Debugebene an das Programm oder die Routine übergeben, das die Debugebene festlegt. Führen Sie für instance den folgenden Aufruf aus, um die Debugebene über den Treiber mithilfe einer Smart Karte-Bibliotheksroutine festzulegen:
SmartcardSetDebugLevel(DebugLevel);
Um Debugnachrichten von einem Lesertreiber zu schreiben, muss der Treiber die folgende Routine aufrufen:
SmartcardDebug(
ULONG DebugLevel,
PCHAR Message
);
Wichtig
Sie müssen die überprüfte Version des Betriebssystems und die überprüfte Version des Treibers installieren, um Debugmeldungen zu erhalten.
Diese Routine kann auch verwendet werden, um Nachrichten auf folgende Weise in einen Remotedebugger zu schreiben.
Verwenden Sie zum Schreiben von Fehlermeldungen die DEBUG_ERROR Konstante für DebugLevel.
Verwenden Sie zum Schreiben von Standardtreibermeldungen die DEBUG_DRIVER Konstanten.
Verwenden Sie DEBUG_TRACE als DebugLevel, um Ablaufverfolgungsmeldungen zu schreiben, die angeben, wann der Readertreiber in eine Routine eintritt oder diese beendet.
Verwenden Sie bei der Entwicklung eines Treibers die überprüfte Version der Smart Karte-Treiberbibliothek, und legen Sie die Debugebene auf das Maximum fest, indem Sie SmartcardSetDebugLevel(DEBUG_ALL) in Ihrer DriverEntry-Routine verwenden.
Informationen zum Einrichten einer Remotedebugsitzung finden Sie unter Windows-Debuggen.