Freigeben über


Driver Verifier-Optionen und Regelklassen

Dieses Thema beschreibt die optionalen Funktionen und Regelklassen innerhalb von Driver Verifier. Unter Standardeinstellungen finden Sie eine Liste der Optionen, die enthalten sind, wenn Sie die Standardeinstellungen verwenden.

Hinweis

Einige automatische Prüfungen werden bei einem zu prüfenden Treiber immer durchgeführt, unabhängig davon, welche Optionen ausgewählt wurden. Wenn der Treiber Speicher an einem unzulässigen IRQL verwendet, Spin Locks und Speicherzuweisungen unzulässig aufruft oder freigibt, Stacks unzulässig wechselt oder den Speicherpool freigibt, ohne zuvor die Timer zu entfernen, wird Driver Verifier dieses Verhalten erkennen. Wenn der Treiber entladen wird, überprüft Driver Verifier, ob er seine Ressourcen ordnungsgemäß freigegeben hat.

Aktivieren von Regelklassen mit /ruleclasses

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

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

Beachten Sie, dass Sie bei der Aktivierung mehrerer Klassen (dargestellt durch die unten stehende positive Dezimalzahl) jede Ganzzahl durch ein Leerzeichen trennen.

Die Beschreibungen für diese Regelklassen finden Sie unten.

Standard-Regelklassen

Regelklasse Dezimale ID
Spezieller Pool 1
IRQL-Überprüfung erzwingen 2
Pool-Verfolgung 4
E/A-Überprüfung 5
Deadlockerkennung 6
DMA-Überprüfung 8
Sicherheitsüberprüfungen 9
Verschiedene Prüfungen 12
Complianceüberprüfung 18
WDF-Überprüfung 34

Zusätzliche Regelklassen

Diese Regelklassen sind für spezielle Testszenarien vorgesehen. Regelklassen, die mit (*) gekennzeichnet sind, erfordern eine E/A-Prüfung (5), die automatisch aktiviert wird. Flags, die mit (**) markiert sind, unterstützen die Deaktivierung einzelner Regeln.

Regelklasse Dezimale ID
Simulation niedriger Ressourcen nach dem Zufallsprinzip 3
Anstehende E/A-Anfragen erzwingen (*) 10
IRP-Protokollierung 11
Invariante MDL-Überprüfung für Stack 14
Invariant MDL-Prüfung für Treiber (*) 15
Power Framework Delay Fuzzing 16
Überprüfung der Port-/Miniport-Schnittstelle 17
Systematische Simulation geringer Ressourcen 19
DDI-Compliance-Prüfung (zusätzlich) 20
Fuzzing der Kernelsynchronisierungsverzögerung 24
Überprüfung des VM-Switches 25
Code-Integritätsprüfungen 26
Überprüfung der Treiberisolation (erfordert 36) 33
Zusätzliche IRQL-Prüfung 35
Aktivieren der DIF 36

Optionale Funktionen und Regelklassenbeschreibungen

Spezieller Pool

Wenn diese Option aktiviert ist, weist Driver Verifier die meisten Anfragen des Treibers an den Speicher aus einem speziellen Pool zu. Dieser spezielle Pool wird auf Speicherüberschreitung, Speicherunterschreitung und auf Speicher, auf den zugegriffen wird, nachdem er freigegeben wurde, überwacht.

IRQL-Überprüfung erzwingen

Wenn diese Option aktiviert ist, setzt Driver Verifier den Treiber unter extremen Speicherdruck, indem auslagerbarer Code ungültig gemacht wird. Wenn der Treiber versucht, auf ausgelagerten Speicher mit dem falschen IRQL zuzugreifen oder während er einen Spin Lock hält, erkennt Driver Verifier dieses Verhalten.

Simulation knapper Ressourcen (in Windows 8.1 Zufallsgenerierte Simulation knapper Ressourcen genannt)

Wenn diese Option aktiviert ist, schlägt Driver Verifier Anfragen zur Pool-Zuweisung und andere Anfragen zu Ressourcen nach dem Zufallsprinzip fehl. Indem diese Zuweisungsfehler in das System injiziert werden, testet Driver Verifier die Fähigkeit des Treibers, mit einer Situation mit knappen Ressourcen umzugehen.

Pool-Verfolgung

Wenn diese Option aktiviert ist, prüft Driver Verifier, ob der Treiber alle seine Speicherzuweisungen freigegeben hat, wenn er entladen wird. Dadurch werden Speicherlecks aufgedeckt.

E/A-Überprüfung

Wenn diese Option aktiviert ist, weist Driver Verifier die IRPs des Treibers aus einem speziellen Pool zu und überwacht die E/A-Verarbeitung des Treibers. Dadurch wird die illegale oder inkonsistente Verwendung von E/A-Funktionen aufgedeckt.

Deadlockerkennung

Wenn diese Option aktiviert ist, überwacht Driver Verifier die Verwendung von Spin Locks, Mutexes und Fast Mutexes durch den Treiber. Dadurch wird festgestellt, ob der Code des Treibers irgendwann einmal einen Deadlock verursachen könnte.

Erweiterte E/A-Überprüfung

Wenn diese Option aktiviert ist, überwacht Driver Verifier die Aufrufe mehrerer E/A-Manager-Routinen und führt Stresstests von PnP IRPs, Power IRPs und WMI IRPs durch. In Windows 7 und neueren Versionen des Windows-Betriebssystems sind alle Funktionen der Erweiterten E/A-Verifizierung als Teil der E/A-Verifizierung enthalten und es ist nicht mehr verfügbar und auch nicht mehr notwendig, diese Option im Driver Verifier Manager oder über die Kommandozeile zu wählen.

DMA-Überprüfung

Wenn diese Option aktiviert ist, überwacht Driver Verifier die Verwendung von DMA-Funktionen durch den Treiber. Dadurch wird die unsachgemäße Verwendung von DMA-Puffern, Adaptern und Zuordnungsregistern erkannt.

Sicherheitsüberprüfungen

(Windows Vista und höher) Wenn diese Option aktiviert ist, sucht Driver Verifier nach allgemeinen Fehlern, die zu Sicherheitsschwachstellen führen können, so z. B. ein Verweis auf Adressen im Benutzermodus durch Funktionen im Kernel-Modus.

Verschiedene Prüfungen

(Windows Vista und höher) Wenn diese Option aktiviert ist, sucht Driver Verifier nach allgemeinen Ursachen für Treiberabstürze, wie z. B. die falsche Handhabung von freigegebenem Speicher.

Ausstehende E/A-Anfrage erzwingen

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

IRP-Protokollierung

(Windows Server 2003 und höher) Wenn diese Option aktiviert ist, überwacht Driver Verifier die Verwendung von IRPs durch einen Treiber und erstellt eine Log-Datei der IRP-Verwendung.

Storport-Überprüfung

(Windows Vista und höher) Wenn diese Option aktiviert ist, überwacht Driver Verifier einen Storport-Miniport-Treiber auf die unsachgemäße Verwendung von exportierten Storport-Funktionen, übermäßige Verzögerungen und die unsachgemäße Behandlung von Storport-Anfragen.

Power Framework Delay Fuzzing

(Ab Windows 8) Wenn diese Option aktiviert ist, randomisiert Driver Verifier die Thread-Zeitpläne, um Parallelitätsfehler in den Treibern zu beseitigen, die das Power Management Framework (PoFx) verwenden. Diese Option wird nicht für Treiber empfohlen, die das Power Management Framework (PoFx) nicht direkt nutzen.

Complianceüberprüfung

(Ab Windows 8) Wenn diese Option aktiviert ist, wendet Driver Verifier eine Reihe von DDI-Regeln (Device Driver Interface) an, die die korrekte Interaktion zwischen einem Treiber und der Kernel-Schnittstelle des Betriebssystems überprüfen.

Invariante MDL-Überprüfung für Stack

(Ab Windows 8) Die Option Invariante-MDL-Prüfung für Stack überwacht, wie der Treiber mit invarianten MDL-Puffern über den Stack des Treibers umgeht. Driver Verifier kann illegale Änderungen an Invariant-MDL Puffern erkennen. Um diese Option zu verwenden, muss die E/A-Überprüfung bei mindestens einem Treiber aktiviert sein.

Invariante MDL-Überprüfung für Treiber

(Ab Windows 8) Die Option Prüfung von Invariant-MDL-Treibern überwacht, wie der Treiber mit invarianten MDL-Puffern umgeht, und zwar auf der Basis einzelner Treiber. Diese Option erkennt illegale Änderungen an Invariant-MDL-Puffern. Um diese Option zu verwenden, müssen Sie die E/A-Überprüfung bei mindestens einem Treiber aktivieren.

Stackbasierte Fehlereinschleusung

(Nur verfügbar mit Windows 8 und WDK 8) Die Option Stack Based Failure Injection injiziert Ressourcen-Fehler in Kernel-Modus-Treiber. Diese Option verwendet einen speziellen Treiber, KmAutoFail.sys, in Verbindung mit Driver Verifier, um in die Fehlerbehandlungspfade der Treiber einzudringen.

Systematische Simulation geringer Ressourcen

(Ab Windows 8.1) Die Option Systematische Simulation knapper Ressourcen injiziert Ressourcen-Fehler in Kernel-Modus-Treiber.

NDIS-/WLAN-Überprüfung

(Ab Windows 8.1) Wenn diese Option aktiviert ist, wendet Driver Verifier eine Reihe von NDIS- und Wireless LAN (WIFI)-Regeln an, die die korrekte Interaktion zwischen einem NDIS-Miniport-Treiber und dem Kernel des Betriebssystems überprüfen.

Fuzzing der Kernelsynchronisierungsverzögerung

(Ab Windows 8.1) Mit dieser Option werden Thread-Zeitpläne zufällig erstellt, um Parallelitätsfehler in Treibern zu erkennen.

Überprüfung des VM-Switches

(Ab Windows 8.1) Diese Option überwacht Filtertreiber (erweiterbare Switch-Erweiterungen), die innerhalb des Hyper-V Extensible Switch ausgeführt werden.

Überprüfung der Port-/Miniport-Schnittstelle

Mit der Überprüfung der Port-/Miniport-Schnittstelle kann Driver Verifier die DDI-Schnittstelle zwischen PortCls.sys und seinen Audio-Miniport-Treibern sowie ks.sys und seinen AVStream-Miniport-Treibern überprüfen. Siehe 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 Code-Integritätsprüfungen stellen die Kompatibilität dieser Code-Integritätsregeln sicher und erkennen Verstöße.

WDF-Verifizierung

Die WDF-Prüfung prüft, ob ein Kernel-Mode-Treiber die Anforderungen des Kernel-Mode Driver Framework (KMDF) korrekt erfüllt.

Zusätzliche IRQL-Prüfung

Die zusätzliche IRQL-Prüfung ergänzt die DDI Compliance Checking IRQL-Regeln für PASSIVE_LEVEL. Sie besteht aus zwei Regeln:

  • Die Regel IrqlIoRtlZwPassive legt fest, dass der Treiber die in der Regel aufgeführten DDIs nur aufruft, wenn er mit IRQL = PASSIVE_LEVEL ausgeführt wird.
  • Die Regel IrqlNtifsApcPassive legt fest, dass der Treiber die in der Regel aufgeführten DDIs nur dann aufruft, wenn er entweder bei IRQL = PASSIVE_LEVEL oder bei IRQL <= APC_LEVEL ausgeführt wird.

Treiber-Isolationsüberprüfungen

Treiber-Isolationsprüfungen sind entscheidend für die Überprüfung der Anforderungen an die Isolation des Runtime-Treiberpakets von Windows-Treibern. Weitere Informationen finden Sie unter Erste Schritte bei der Entwicklung von Windows-Treibern. Die Prü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

Pool-Verfolgung

E/A-Überprüfung

Deadlockerkennung

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

DMA-Überprüfung

Sicherheitsüberprüfungen

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

DDI-Compliance-Prüfung (ab Windows 8)

Optionen von Driver Verifier, die eine E/A-Prüfung erfordern

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