Freigeben über


Invariante MDL-Überprüfung für Stapel

Die Invariante MDL-Überprüfung für Stack-Option überwacht, wie der Treiber invariante MDL-Puffer über den Treiberstapel verarbeitet. 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.

Anmerkung Diese Option ist ab Windows 8 verfügbar.

Die Option "Invariante MDL-Überprüfung auf Stapel" stellt sicher, dass Treiber die Regeln für invariante MDL-Puffer nur an dem Punkt befolgen, an dem die Anforderung den Treiberstapel verlässt.

Wenn ein IRP mit invarianter MDL zum ersten Mal in der IoCallDriver-Routine angezeigt wird, wird eine eindeutige Signatur aus dem Inhalt des invarianten MDL-Puffers berechnet und in einer internen Datenbank gespeichert. Während der Fertigstellung des IRP in der IoCompleteRequest-Routine, wenn das IRP immer noch eine invariante MDL trägt, für die wir die Signatur erfasst haben, überprüft Driver Verifier, dass der Puffer nicht geändert wurde.

Ein invarianter Puffer kann für die Schreibanforderung nicht während der gesamten Lebensdauer des IRP geändert werden. Bei einer Leseanforderung kann ein invarianter Puffer nicht auf seinem Verteilerpfad geändert werden, sodass der Vergleich der Puffersignatur beim letzten Aufruf von IoCallDriver erfolgt.

Die invariante MDL-Überprüfung auf Stapeloption überprüft die MDL-Pufferinvarianz über den gesamten Treiberstapel, ohne zu berücksichtigen, was mit dem Puffer passiert, während er einzelne Treiber im Stapel durchläuft. Diese Option ist global und kann nicht selektiv pro Treiber erzwungen werden. Die Option "Invariant MDL Checking for Stack" kann den Verstoß nur abfangen, ohne den Treiber identifizieren zu können, der gegen die Pufferbeständigkeit verstoßen hat. Um den fehlerhaften Treiber genauer zu identifizieren, verwenden Sie die Option "Invariante MDL-Überprüfung für Treiber", bei der die Überprüfung der Unveränderlichkeit von Pufferinhalten bei jedem Aufruf von IoCallDriver und IoCompleteRequest DDIs ausgeführt wird.

Aktivieren dieser Option

Sie können die Invariante MDL-Überprüfung auf Stapelfunktion für einen oder mehrere Treiber aktivieren, indem Sie den Treiberüberprüfungs-Manager oder die befehlszeile Verifier.exe verwenden. Sie müssen den Computer neu starten, um die MDL-Invarianzen-Überprüfung für den Stack zu aktivieren oder zu deaktivieren. Weitere Informationen finden Sie unter Auswählen von Treiberüberprüfungsoptionen.

Um die Option "Invariante MDL-Überprüfung auf Stapel" zu aktivieren, müssen Sie auch die E/A-Überprüfung aktivieren.

  • An der Befehlszeile

    In der Befehlszeile wird die invariante MDL-Überprüfung für Stapel durch 0x00002000 (Bit 13) dargestellt. Verwenden Sie zum Aktivieren der invarianten MDL-Überprüfung für Stack einen Flagwert von 0x00002010 oder fügen Sie 0x00002010 zum Flagwert hinzu. Dieser Wert aktiviert die E/A-Überprüfung (0x10) und die invariante MDL-Überprüfung auf Stapel (0x00002000). Beispiel:

    verifier /flags 0x00002010 /driver MyDriver.sys
    

    Das Feature wird nach dem nächsten Start aktiv.

  • Verwenden des Treiberüberprüfungs-Managers

    1. Starten Sie den Treiberüberprüfungs-Manager. Geben Sie " Verifier " in ein Eingabeaufforderungsfenster ein.
    2. Wählen Sie "Benutzerdefinierte Einstellungen erstellen" (für Codeentwickler) aus, und klicken Sie dann auf "Weiter".
    3. Wählen Sie aus einer vollständigen Liste "Einzelne Einstellungen" aus.
    4. Wählen Sie die E/A-Überprüfung und die invariante MDL-Überprüfung auf Stapel aus (überprüfen).
    5. Starten Sie den Computer neu.