Treiberüberprüfung: Neuerungen
Die Treiberüberprüfung ist ab Windows 2000 in allen Versionen von Windows verfügbar. Jede Version führt neue Features ein und überprüft, ob Fehler in Windows-Treibern gefunden werden. In diesem Abschnitt werden die Änderungen zusammengefasst und Links zu der zugehörigen Dokumentation bereitgestellt.
- Treiberüberprüfung in Windows 10
- Treiberüberprüfung in Windows 8.1
- Treiberüberprüfung in Windows 8
- Treiberüberprüfung in Windows 7
- Treiberüberprüfung in Windows Vista
- Treiberüberprüfung in Windows XP
Treiberüberprüfung in Windows 11 (Aktualisiert: 30. September 2021)
Ab Windows 11 werden viele Flags jetzt ohne Neustart aktiviert, wobei eine andere Befehlssyntax als die flüchtige Syntax verwendet wird. Weitere Informationen zur neuen Syntax finden Sie unter Driver Verifier Command Syntax .
Treiberüberprüfung in Windows 10 (Aktualisiert: 8. Mai 2018)
Wichtig
Informationen zum Aktivieren von WDF Verifier unter Windows 10, Version 1803 oder neueren Versionen finden Sie unter Verwenden von KMDF Verifier.
- Sie können die WDF-Überprüfung weiterhin als Teil der Flags
/standard
der Treiberüberprüfung aktivieren. Weitere Informationen finden Sie unter Befehlssyntax der Treiberüberprüfung . - Diese Änderung wirkt sich auf Sie aus, wenn Sie DV mit Syntax
/flags 0x209BB
aktivieren, da die WDF-Überprüfung nicht mehr automatisch aktiviert wird.
Ab Windows 10 enthält die Treiberüberprüfung neue Treibervalidierungsregeln für die folgenden Technologien:
Driver Verifier in Windows 8-1 (Aktualisiert: 17. Juni 2013)
Ab Windows 8.1 führt Driver Verifier vier neue Optionen zum Erkennen von Fehlern ein.
Die NDIS/WIFI-Überprüfungsoption wendet eine Reihe von NDIS- und WLAN-Regeln an, die auf die richtige Interaktion zwischen einem NDIS-Miniporttreiber und dem Betriebssystemkernels überprüfen.
Die Simulationsoption Systematische Niedrige Ressourcen fügt Ressourcenfehler in Kernelmodustreiber ein.
Die Option Fuzzing der Kernelsynchronisierungsverzögerung randomisiert Threadzeitpläne, um Parallelitätsfehler im Treiber zu erkennen.
Die Option zur Überprüfung des VM-Switches überwacht Filtertreiber (erweiterbare Switcherweiterungen), die innerhalb des erweiterbaren Hyper-V-Switches ausgeführt werden.
Neue Debuggererweiterung: !ruleinfo
Driver Verifier in Windows 8 (Aktualisiert: 20. Oktober 2012)
Ab Windows 8 führt Driver Verifier fünf neue Optionen zum Erkennen von Fehlern ein.
- Die Power Framework-Option Fuzzing verzögern fügt zufällige Ausführungsverzögerungen ein, um Parallelitätsfehler in Treibern zu erkennen, die das Power Management Framework (PoFx) verwenden. Die Ausführungsverzögerungen weisen Obergrenzen auf. Diese Option wird nicht für Treiber empfohlen, die nicht direkt das Power Management Framework (PoFx) verwenden.
- Die DDI-Konformitätsüberprüfungsoption wendet die gleichen DDI-Verwendungsregeln (Device Driver Interface) an, die static driver verifier verwendet, um zu überprüfen, ob Ihr Treiber Funktionsaufrufe an der erforderlichen IRQL für die Funktion durchführt. Die DDI-Konformitätsüberprüfung wird als Teil der Standardoptionen für die Treiberüberprüfung ausgeführt.
- Die Option Invariant MDL Checking for Stack überwacht, wie der Treiber invariante MDL-Puffer im Treiberstapel behandelt.
- Die Option Invariante MDL-Überprüfung auf Treiber überwacht, wie der Treiber invariante MDL-Puffer auf Treiberbasis behandelt.
- Die Option Stapelbasierte Fehlerinjektion fügt Ressourcenzuordnungsfehler in Kernelmodustreiber ein.
Wenn Sie Ihren Treiber mithilfe von Visual Studio 2012 und wdk for Windows 8 erstellen, bereitstellen und testen, können Sie die Treiberüberprüfung auch so konfigurieren, dass er auf einem Testcomputer ausgeführt wird, wenn Sie den Treiber zu Testzwecken bereitstellen.
Treiberüberprüfung in Windows 7 (Aktualisiert: 22. Oktober 2012)
Für Windows 7 wurde die Treiberüberprüfung mit neuen Tests und Features verbessert, mit denen driver verifier mehr Klassen typischer Treiberfehler verfügbar machen kann.
- Falsche Verweise auf Benutzerhandles von Kerneltreibern
- Verbesserungen der E/A-Überprüfung
- Verbesserungen an speziellen Pools, Poolnachverfolgung und Simulationsverbesserungen mit geringen Ressourcen
- Falsche Verwendung von Synchronisierungsmechanismen
- Falsche Objektverweise
- Poolkontingentgebühren aus der DPC-Routine
- Blöcke oder Verzögerungen beim Herunterfahren des Systems
- Verbesserte Erzwingung ausstehender E/A-Anforderungen
In Windows 7 bietet die Treiberüberprüfung Überprüfungen auf Spinsperren in der Warteschlange. Diese Überprüfungen ähneln denen, die in früheren Windows-Versionen zum Drehen von Sperren bereitgestellt wurden. Diese Überprüfungen umfassen Folgendes:
Überprüfen, ob ein Vorgang, der den Wert der Interruptanforderungsebene (Interrupt Request Level, IRQL) erhöhen soll, z. B. KeAcquireInStackQueuedSpinLock, den IRQL-Wert nicht senkt.
Überprüfen, ob ein Vorgang, der den IRQL-Wert senken soll, z. B. KeReleaseInStackQueuedSpinLock, den IRQL-Wert nicht erhöht.
Kürzen des Arbeitssatzes des Systemprozesses, wenn die Option IRQL-Überprüfung erzwingen aktiviert ist, wenn der IRQL auf DISPATCH_LEVEL oder höher erhöht wird, um mögliche Verweise auf ausgelagerten Arbeitsspeicher verfügbar zu machen, während der Treiber mit erhöhten IRQL-Rechten ausgeführt wird.
Vorhersagen möglicher Deadlocks, wenn die Option Deadlockerkennung aktiviert ist.
Es wird versucht, dieselbe KSPIN_LOCK Datenstruktur sowohl als Drehsperre als auch als Stapel-Spinsperre in der Warteschlange zu verwenden, wenn die Option Deadlockerkennung aktiviert ist.
Suchen nach offensichtlich falschen Zeigerwerten, z. B. einer virtuellen Adresse im Benutzermodus, die als Spin-Lock-Adresse verwendet wird.
Protokollieren von IRQL-Übergängen im IRQL-Protokoll der Treiberüberprüfung. Diese Informationen werden angezeigt, wenn Sie die Erweiterung !verifier 8 der Windows-Debugger verwenden. Weitere Informationen finden Sie unter !verifier.
Zusätzliche Debuginformationen
In Windows 7 stellt driver verifier die folgenden zusätzlichen Informationen bereit, die für das Debuggen nützlich sind:
Es gibt ein Protokoll mit Stapelüberwachungen in chronologischer Reihenfolge für die letzten Aufrufe von KeEnterCriticalRegion und KeLeaveCriticalRegion von verifizierten Treibern. Der Protokollinhalt wird mithilfe der Debuggererweiterung !verifier 0x200 der Windows-Debugger angezeigt. Diese Informationen können hilfreich sein, um Szenarien zu verstehen, in denen ein Thread unerwartet in einer kritischen Region ausgeführt wird oder versucht, eine kritische Region zu verlassen, die er bereits verlassen hat.
Sie können zusätzliche Informationen aus dem Protokoll für ausstehende E/A-Anforderungen erzwingen anzeigen, indem Sie die Debuggererweiterung !verifier 0x40 verwenden. In früheren Windows-Versionen enthielt das Protokoll nur eine Stapelüberwachung für jedes IRP, das von der Treiberüberprüfung erzwungen wurde, um ausstehend zu sein. Dies war die Stapelüberwachung aus dem Zeitpunkt, zu dem IoCompleteRequest zum ersten Mal für die erzwungene ausstehende IRP aufgerufen wurde. Windows 7 verfügt über mindestens zwei Protokolleinträge, möglicherweise mehr als zwei, für jede erzwungene ausstehende IRP:
- Stapelüberwachung zu dem Zeitpunkt, zu dem die Treiberüberprüfung die IRP ausgewählt hat, die erzwungen werden soll ausstehend. Die Treiberüberprüfung wählt einige der IRPs aus, die erzwungen werden sollen, wenn einer der überprüften Treiber IoCallDriver aufruft.
- Stapelüberwachungen für jeden IoCompleteRequest-Aufruf für den erzwungenen ausstehenden IRP, bevor der Abschluss den überprüften Treiber erreicht. Es können mehrere IoCompleteRequest-Aufrufe für denselben IRP vorhanden sein, da einer der Treiber die Vervollständigung vorübergehend aus der Vervollständigungsroutine beenden und dann fortsetzen kann, indem IoCompleteRequest erneut aufgerufen wird.
Im IRQL-Übergangsprotokoll sind weitere gültige Stapelablaufverfolgungen vorhanden. Dieses Protokoll wird mithilfe von !verifier 8 angezeigt. In Windows-Versionen vor Windows 7 hätte Driver Verifier möglicherweise versucht, einige dieser Stapelablaufverfolgungen bei IRQL mit erhöhten Rechten zu protokollieren, und konnte die Stapelablaufverfolgung aufgrund des hohen IRQL-Werts nicht erfassen. In Windows 7 versucht driver verifier, diese Stapelüberwachungen zu erfassen:
- Vor dem Auslösen des IRQL, z. B. wenn ein überprüfter Treiber KeAcquireSpinLock aufruft.
- Nachdem die IRQL gesenkt wurde, wenn ein überprüfter Treiber KeReleaseSpinLock aufruft.
Auf diese Weise kann driver verifier mehr dieser IRQL-Übergangsstapelablaufverfolgungen erfassen.
!analyze kann Probleme selektieren, die durch die erweiterten E/A-Überprüfungen (die Teil der E/A-Überprüfung in Windows 7 sind) verfügbar gemacht werden. In früheren Windows-Versionen bestand die Fehlerberichterstattung bei der erweiterten E/A-Überprüfung darin, eine Beschreibung des Treiberfehlers anzuzeigen, der von der Treiberüberprüfung erkannt wurde, gefolgt von einer Unterbrechung des Debuggers. Das Ausführen von !analyze nach einer solchen Unterbrechung führt nicht zu einer sinnvollen Selektierung für viele dieser Unterbrechungen, da !analyze die Informationen aus dem Fehlerbeschreibungstext, der im Debugger angezeigt wird, nicht verwenden kann. In Windows 7 werden die aussagekräftigen Informationen zu diesen Treiberfehlern von Driver Verifier im Arbeitsspeicher gespeichert. !analyze kann diese Informationen finden und eine viel aussagekräftigere automatische Selektierung für viele dieser Unterbrechungen durchführen.
Driver Verifier in Windows Vista (Aktualisiert: 9. Februar 2009)
Für Windows Vista wurde driver verifier um neue Tests und Features erweitert.
- Aktivieren der Treiberüberprüfung und Ändern von Einstellungen ohne Neustart
- Erweiterte Simulation mit geringen Ressourcen
- Ausstehende E/A-Anforderungen erzwingen
- Sicherheitsüberprüfungen
- Ausführlichere E/A-Überprüfung
- Erweiterte IRQL-Überprüfung
- Verschiedene Überprüfungen
- Nachverfolgung gesperrter Speicherseiten
- Zusätzliche automatische Überprüfungen
Treiberüberprüfung in Windows XP (Aktualisiert: 4. Dezember 2001)
Driver Verifier ist ein Tool zum Überwachen von Windows-Kernelmodustreibern und Grafiktreibern. Microsoft empfiehlt Hardwareherstellern dringend, ihre Treiber mit driver verifier zu testen, um sicherzustellen, dass Treiber keine illegalen Funktionsaufrufe ausführen oder zu Systembeschädigungen führen. Driver Verifier wurde mit neuen Tests und Features für Microsoft Windows XP verbessert.
Treiber, die zu Testzwecken an WHQL übermittelt werden, müssen die Driver Verifier bestehen. Zu den neuen Features der Treiberüberprüfung in Windows XP gehören:
- Driver Verifier Manager, eine brandneue grafische Benutzeroberfläche (GUI) für verifier.exe
- Neue automatische Überprüfung für die Überwachung von Stapelwechseln
- Neue Treiberüberprüfungsoptionen für die DMA-Überprüfung (auch als HAL-Überprüfung bezeichnet), Deadlockerkennung und SCSI-Überprüfung
- E/A-Überprüfungsänderungen, die Tests "Level 1" und "Level 2" kombinieren, optional erweiterte E/A-Überprüfungstests
- Neue Debuggererweiterungen !deadlock und !dma
- Neue Fehlerüberprüfungen: 0xE6 (DRIVER_VERIFIER_DMA_VIOLATION) und 0xF1 (SCSI_VERIFIER_DETECTED_VIOLATION)
- Zusätzliche Untercodes für die vorhandenen Fehlerüberprüfungscodes 0xC4 und 0xC9
Zu den Features der Treiberüberprüfung gehören auch:
Neue Verifier-Befehlszeilenoptionen Das Hilfsprogramm verifier.exe verfügt über einen neuen Parameter, VolatileDriverList, der zusammen mit dem Schlüsselwort (keyword) /adddriver verwendet werden kann, um eine Liste von Treibern anzugeben, die den flüchtigen Einstellungen hinzugefügt werden sollen. VolatileDriverList kann mit dem /removedriver-Schlüsselwort (keyword) verwendet werden, um eine Liste der zu entfernenden Treiber anzugeben.
Neue !verifier-Erweiterungen Neue !verifier-Erweiterungen zeigen zusätzliche Protokollinformationen an, wenn die Überwachung von geringen Ressourcen oder IRQL-Aus- und Drehsperren überwacht wird. Die Onlinehilfe ist ebenfalls verfügbar.
- Mit 0x4 festgelegte Flags bewirken, dass die Anzeige ein Fehlerprotokoll enthält, das von der Driver Verifier während der Simulation mit geringen Ressourcen eingefügt wird.
- Flags , die mit 0x8 festgelegt sind, bewirkt, dass die Anzeige ein Protokoll der letzten IRQL-Änderungen enthält, die von den zu überprüfenden Treibern vorgenommen wurden.
- Wenn Flags genau 0x4 oder 0x8 entspricht, gibt der Parameter Quantity die Anzahl der Datensätze oder Protokolleinträge an, die in die Anzeige eingeschlossen werden sollen.
- Der Parameter ? zeigt einen kurzen Hilfetext an.
Die Onlinehilfe für Driver Verifier Manager Online help for Driver Verifier Manager kann auf eine der folgenden Arten angezeigt werden:
- Wählen Sie ein Element im Fenster Driver Verifier Manager aus, und halten Sie es gedrückt (oder klicken Sie mit der rechten Maustaste darauf), und wählen Sie im Popupmenü Was ist das? aus.
- Wählen Sie das Fragezeichen (?) in der oberen rechten Ecke des Fensters aus, und wählen Sie dann ein Element im Fenster Driver Verifier Manager aus.