Invariante MDL-Überprüfung für Stack

Die Option Invariant MDL Checking for 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.

Hinweis Diese Option ist ab Windows 8 verfügbar.

Die Option Invariant MDL Checking for Stack stellt sicher, dass Treiber die Regeln für invariante MDL-Puffer nur dann befolgen, wenn 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. Wenn das IRP während des Abschlusses der IRP in der IoCompleteRequest-Routine weiterhin eine invariante MDL enthält, für die wir die Signatur aufgezeichnet haben, überprüft driver verifier, dass sich der Puffer nicht geändert hat.

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

Mit der Option Invariant MDL Checking for Stack wird die MDL-Pufferinvarianz über den gesamten Treiberstapel hinweg überprüft, ohne zu berücksichtigen, was mit dem Puffer geschieht, wenn er einzelne Treiber im Stapel durchläuft. Diese Option ist global und kann nicht auf Treiberbasis selektiv erzwungen werden. Die Option Invariante MDL-Überprüfung für Stack kann den Verstoß nur abfangen, ohne den Treiber ermitteln zu können, der die Pufferinvarianz verletzt hat. Um den fehlerhaften Treiber zu ermitteln, verwenden Sie die Option Invariante MDL-Überprüfung auf Treiber , die die Überprüfung der Invarianz von Pufferinhalten bei jedem Aufruf von IoCallDriver - und IoCompleteRequest-DDIs durchführt.

Aktivieren dieser Option

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

Um die Option Invariante MDL-Überprüfung für Stack zu aktivieren, müssen Sie auch die E/A-Überprüfung aktivieren.

  • Über die Befehlszeile

    In der Befehlszeile wird die invariante MDL-Überprüfung für Stack durch 0x00002000 (Bit 13) dargestellt. Um die invariante MDL-Überprüfung für Stack zu aktivieren, verwenden Sie den Flagwert 0x00002010, oder fügen Sie dem Flagwert 0x00002010 hinzu. Dieser Wert aktiviert die E/A-Überprüfung (0x10) und die invariante MDL-Überprüfung für Stack (0x00002000). Beispiel:

    verifier /flags 0x00002010 /driver MyDriver.sys
    

    Das Feature ist 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 Einzelne Einstellungen aus einer vollständigen Liste auswählen aus.
    4. Wählen Sie E/A-Überprüfung und invariante MDL-Überprüfung für Stack aus (überprüfen).
    5. Starten Sie den Computer neu.