Freigeben über


Treiberüberprüfungsoptionen und Regelklassen

In diesem Thema werden die optionalen Features und Regelklassen in der Treiberüberprüfung beschrieben. Unter Standardeinstellungen finden Sie die Liste der Optionen, die bei Verwendung der Standardeinstellungen enthalten sind.

Hinweis

Einige automatische Überprüfungen werden immer für einen Treiber durchgeführt, der überprüft wird, unabhängig davon, welche Optionen ausgewählt wurden. Wenn der Treiber Arbeitsspeicher an einem nicht ordnungsgemäßen IRQL verwendet, Spinsperren und Speicherzuordnungen nicht ordnungsgemäß aufruft oder freigibt, Stapel nicht ordnungsgemäß wechselt oder speicherpools freigibt, ohne zuerst Timer zu entfernen, erkennt Driver Verifier dieses Verhalten. Wenn der Treiber entladen wird, überprüft Driver Verifier, ob die Ressourcen ordnungsgemäß freigegeben wurden.

Aktivieren von Regelklassen mit /ruleclasses

Ab Windows 10 Version 17627 können Sie Regelklassen mit der folgenden Syntax aktivieren:

/ruleclasses or /rc [<ruleclass_1> <ruleclass_2> ... <ruleclass_k>]

Beachten Sie, dass beim Aktivieren mehrerer Klassen (dargestellt durch die positive Dezimalzahl unten) jede ganze Zahl durch ein Leerzeichen getrennt wird.

Beschreibungen für diese Regelklassen finden Sie unten.

Standardregelklassen

Regelklasse Dezimal-ID
Spezialpool 1
Erzwingen der IRQL-Überprüfung 2
Poolnachverfolgung 4
E/A-Überprüfung 5
Deadlockerkennung 6
DMA-Überprüfung 8
Sicherheitsüberprüfungen 9
Sonstige Überprüfungen 12
DDI-Konformitätsüberprüfung 18
WDF-Überprüfung 34

Zusätzliche Regelklassen

Diese Regelklassen sind für bestimmte Szenariotests vorgesehen. Regelklassen sind mit (*) gekennzeichnet, erfordern E/A-Überprüfung (5), die automatisch aktiviert wird. Mit (**) gekennzeichnete Flags unterstützen das Deaktivieren einzelner Regeln.

Regelklasse Dezimal-ID
Randomisierte Simulation mit geringen Ressourcen 3
Ausstehende E/A-Anforderungen erzwingen (*) 10
IRP-Protokollierung 11
Invariante MDL-Überprüfung für Stapel (*) 14
Invariante MDL-Überprüfung für Treiber (*) 15
Verzögerungsfuzzing für Power Framework 16
Port-/Miniportschnittstellenüberprüfung 17
Systematische Simulation mit geringen Ressourcen 19
DDI-Konformitätsüberprüfung (zusätzlich) 20
Kernelsynchronisierung verzögerungsfuzzing 24
Überprüfung des VM-Switches 25
Codeintegritätsprüfungen 26
Überprüfungen der Treiberisolation (erfordert 36) 33
Zusätzliche IRQL-Überprüfung 35
DIF aktivieren 36

Optionale Funktions- und Regelklassenbeschreibungen

Spezialpool

Wenn diese Option aktiviert ist, weist Driver Verifier die meisten Speicheranforderungen des Treibers aus einem speziellen Pool zu. Dieser spezielle Pool wird auf Speicherüberläufe, Speicherunterläufe und Arbeitsspeicher überwacht, auf den nach der Freigabe zugegriffen wird.

Erzwingen der IRQL-Überprüfung

Wenn diese Option aktiviert ist, verursacht Driver Verifier einen extremen Speicherdruck auf den Treiber, indem ausgelagerter Code ungültig wird. Wenn der Treiber versucht, mit dem falschen IRQL oder während einer Drehsperre auf ausgelagerten Speicher zuzugreifen, erkennt Driver Verifier dieses Verhalten.

Simulation mit niedrigen Ressourcen (in Windows 8.1 als randomisierte Simulation mit niedrigen Ressourcen bezeichnet)

Wenn diese Option aktiviert ist, schlägt driver verifier zufällig Poolzuordnungsanforderungen und andere Ressourcenanforderungen fehl. Durch das Einfügen dieser Zuordnungsfehler in das System testet Driver Verifier die Fähigkeit des Fahrers, mit ressourcenarmen Situationen fertig zu werden.

Poolnachverfolgung

Wenn diese Option aktiviert ist, überprüft Driver Verifier, ob der Treiber beim Entladen alle Speicherbelegungen freigegeben hat. Dadurch werden Speicherverluste angezeigt.

E/A-Überprüfung

Wenn diese Option aktiv ist, weist Driver Verifier die IRPs des Fahrers aus einem speziellen Pool zu und überwacht die E/A-Behandlung des Fahrers. Dadurch wird eine illegale oder inkonsistente Verwendung von E/A-Routinen erkannt.

Deadlockerkennung

Wenn diese Option aktiv ist, überwacht driver verifier die Verwendung von Spinsperren, Mutexes und schnellen Mutexes durch den Fahrer. Dadurch wird erkannt, ob der Code des Treibers das Potenzial hat, irgendwann einen Deadlock zu verursachen.

Erweiterte E/A-Überprüfung

Wenn diese Option aktiv ist, überwacht Driver Verifier die Aufrufe mehrerer E/A-Manager-Routinen und führt Belastungstests für PnP-IRPs, Power IRPs und WMI-IRPs durch. In Windows 7 und höheren Versionen des Windows-Betriebssystems sind alle Features der erweiterten E/A-Überprüfung als Teil der E/A-Überprüfung enthalten und es ist nicht mehr verfügbar oder erforderlich, diese Option im Treiberüberprüfungs-Manager oder in der Befehlszeile auszuwählen.

DMA-Überprüfung

Wenn diese Option aktiv ist, überwacht driver verifier die Verwendung von DMA-Routinen durch den Fahrer. Dadurch wird eine unsachgemäße Verwendung von DMA-Puffern, Adaptern und Kartenregistern erkannt.

Sicherheitsüberprüfungen

(Windows Vista und höher) Wenn diese Option aktiv ist, sucht die Treiberüberprüfung nach häufigen Fehlern, die zu Sicherheitsrisiken führen können, z. B. einen Verweis auf Benutzermodusadressen durch Kernelmodusroutinen.

Verschiedene Überprüfungen

(Windows Vista und höher) Wenn diese Option aktiv ist, sucht die Driver Verifier nach häufigen Ursachen für Treiberabstürze, z. B. die falsche Behandlung von freigegebenem Arbeitsspeicher.

Ausstehende E/A-Anforderungen erzwingen

(Windows Vista und höher) Wenn diese Option aktiv ist, testet Driver Verifier die Antwort des Treibers auf STATUS_PENDING Rückgabewerte, indem STATUS_PENDING für zufällige Aufrufe an IoCallDriver zurückgegeben wird.

IRP-Protokollierung

(Windows Server 2003 und höher) Wenn diese Option aktiv ist, überwacht driver verifier die Verwendung von IRPs durch einen Treiber und erstellt ein Protokoll der IRP-Verwendung.

Storport-Überprüfung

(Windows Vista und höher) Wenn diese Option aktiv ist, überwacht Driver Verifier einen Storport-Miniporttreiber auf nicht ordnungsgemäße Verwendung exportierter Storport-Routinen, übermäßige Verzögerungen und unsachgemäße Verarbeitung von Storport-Anforderungen.

Power Framework–Verzögerungsfuzzing

(Ab Windows 8) Wenn diese Option aktiv ist, randomisiert Driver Verifier Threadzeitpläne, um Parallelitätsfehler in den Treibern zu entfernen, die das Energieverwaltungsframework (PoFx) verwenden. Diese Option wird nicht für Treiber empfohlen, die nicht direkt das Power Management Framework (PoFx) verwenden.

DDI-Konformitätsüberprüfung

(Ab Windows 8) Wenn diese Option aktiv ist, wendet driver verifier eine Reihe von DDI-Regeln (Device Driver Interface) an, die die richtige Interaktion zwischen einem Treiber und der Kernelschnittstelle des Betriebssystems überprüfen.

Invariante MDL-Überprüfung für Stack

(Ab Windows 8) Die Option Invariante MDL-Überprüfung für Stack überwacht, wie der Treiber invariante MDL-Puffer im Treiberstapel behandelt. Driver Verifier kann illegale Änderungen von invarianten MDL-Puffern erkennen. Um diese Option verwenden zu können, muss die E/A-Überprüfung auf mindestens einem Treiber aktiviert sein.

Invariante MDL-Überprüfung für Treiber

(Ab Windows 8) Mit der Option Invariante MDL-Überprüfung auf Treiber wird überwacht, wie der Treiber invariante MDL-Puffer auf Treiberbasis behandelt. Diese Option erkennt eine unzulässige Änderung von invarianten MDL-Puffern. Um diese Option verwenden zu können, müssen Sie die E/A-Überprüfung für mindestens einen Treiber aktivieren.

Stapelbasierte Fehlerinjektion

(Nur verfügbar mit Windows 8 und WDK 8) Die Option Stack Based Failure Injection fügt Ressourcenfehler in Kernelmodustreiber ein. Diese Option verwendet einen speziellen Treiber( KmAutoFail.sys) in Verbindung mit driver verifier , um die Fehlerbehandlungspfade des Treibers zu durchdringen.

Systematische Simulation mit geringen Ressourcen

(Beginnend mit Windows 8.1) Die Simulationsoption "Systematische Niedrige Ressourcen" fügt Ressourcenfehler in Kernelmodustreiber ein.

NDIS/WIFI-Überprüfung

(Ab Windows 8.1) Wenn diese Option aktiv ist, wendet driver verifier eine Reihe von NDIS- und WLAN-Regeln an, die die richtige Interaktion zwischen einem NDIS-Miniporttreiber und dem Betriebssystemkernkern überprüfen.

Fuzzing der Kernelsynchronisierungsverzögerung

(Ab Windows 8.1) Mit dieser Option werden Threadzeitpläne randomisiert, um Parallelitätsfehler in Treibern zu erkennen.

Überprüfung des VM-Switches

(Ab Windows 8.1) Diese Option überwacht Filtertreiber (erweiterbare Switcherweiterungen), die innerhalb des erweiterbaren Hyper-V-Switches ausgeführt werden.

Port-/Miniport-Schnittstellenüberprüfung

Die Überprüfung der Port-/Miniportschnittstelle ermöglicht es Driver Verifier, die DDI-Schnittstelle zwischen PortCls.sys und ihren Audio-Miniporttreibern zusammen mit ks.sys und den AVStream-Miniporttreibern zu überprüfen. Weitere Informationen finden Sie unter Regeln für AVStream-Treiber und Regeln für Audiotreiber.

Überprüfung der Codeintegrität

Wenn Sie virtualisierungsbasierte Sicherheit verwenden, um die Code-Integrität zu isolieren, kann der Kernelspeicher nur durch eine Code-Integritätsprüfung ausführbar werden. Das bedeutet, dass Kernelspeicherseiten nie beschreibbar und ausführbar sein können, und ausführbarer Code kann nicht direkt geändert werden. Die Codeintegritätsprüfungen stellen die Kompatibilität dieser Codeintegritätsregeln sicher und erkennen Verstöße.

WDF-Überprüfung

Die WDF-Überprüfung überprüft, ob ein Kernelmodustreiber die kmDF-Anforderungen (Kernel-Mode Driver Framework) ordnungsgemäß erfüllt.

Zusätzliche IRQL-Überprüfung

Die zusätzliche IRQL-Überprüfung erweitert die IRQL-Regeln für die DDI-Konformitätsüberprüfung für PASSIVE_LEVEL. Sie besteht aus zwei Regeln:

  • Die IrqlIoRtlZwPassive-Regel gibt an, dass der Treiber die in der Regel aufgeführten DDIs nur aufruft, wenn er unter IRQL = PASSIVE_LEVEL ausgeführt wird.
  • Die IrqlNtifsApcPassive-Regel gibt an, dass der Treiber die in der Regel aufgeführten DDIs nur aufruft, wenn er entweder bei IRQL = PASSIVE_LEVEL oder unter IRQL <= APC_LEVEL ausgeführt wird.

Überprüfungen der Treiberisolation

Überprüfungen der Treiberisolation sind für die Überprüfung der Anforderungen für die Isolation von Laufzeittreiberpaketen von Windows-Treibern wichtig. Weitere Informationen finden Sie unter Erste Schritte mit Windows-Treibern. Die Überprüfungen überwachen Lese- und Schreibvorgänge in der Registrierung, die für isolierte Treiberpakete nicht zulässig sind.

Standardeinstellungen

In den Standardeinstellungen enthaltene Optionen

Spezieller Pool

IRQL-Überprüfung erzwingen

Poolnachverfolgung

E/A-Überprüfung

Deadlockerkennung

Erweiterte E/A-Überprüfung (In Windows 7 und höher wird diese Option automatisch aktiviert, wenn Sie E/A-Überprüfung auswählen)

DMA-Überprüfung

Sicherheitsüberprüfungen

Verschiedene Überprüfungen (Windows Vista und höher)

DDI-Konformitätsüberprüfung (ab Windows 8)

Treiberüberprüfungsoptionen, die eine E/A-Überprüfung erfordern

Es gibt vier Optionen, für die Sie zunächst die E/A-Überprüfung aktivieren müssen. Wenn die E/A-Überprüfung nicht aktiviert ist, sind diese Optionen nicht aktiviert.