Befehle der statischen Treiberüberprüfung (MSBuild)

Sie können statische Treiberüberprüfung (Static Driver Verifier, SDV) in einem Visual Studio-Eingabeaufforderungsfenster ausführen, entweder über die Installation des Windows Driver Kit (WDK) oder durch Ausführen des Enterprise Windows Driver Kit (EWDK). Navigieren Sie zu dem Verzeichnis, in dem die Projektdatei des Treibers oder die Projektdatei der Bibliothek gespeichert ist. Die Parameter können in beliebiger Reihenfolge in der Befehlszeile angezeigt werden.

Wichtig

SDV wird nicht mehr unterstützt, und SDV ist in Windows 24H2 WDK- oder EWDK-Versionen nicht verfügbar. Sie ist in WDKs neuer als Build 26017 nicht verfügbar und nicht im Windows 24H2 RTM WDK enthalten. SDV kann weiterhin verwendet werden, indem Sie das Windows 11, Version 22H2 EWDK (veröffentlicht am 24. Oktober 2023) mit Visual Studio-Buildtools 17.1.5 aus dem Windows Driver Kit (WDK) herunterladen. Es wird nur die Verwendung von Enterprise WDK zum Ausführen von SDV empfohlen. Die Verwendung älterer Versionen des Standard-WDK in Verbindung mit den letzten Versionen von Visual Studio wird nicht empfohlen, da dies wahrscheinlich zu Analysefehlern führt.
In Zukunft wird CodeQL das primäre statische Analysetool für Treiber sein. CodeQL stellt eine leistungsstarke Abfragesprache bereit, die Code als abgefragte Datenbank behandelt, sodass Abfragen für bestimmte Verhaltensweisen, Muster und vieles mehr einfach geschrieben werden können. Weitere Informationen zur Verwendung von CodeQL finden Sie unter CodeQL und dem Logotest für statische Tools.

msbuild /t:sdv /p:Inputs="Parameters" ProjectFile /p:Configuration=configuration /p:Platform=platform

Sie müssen eine Releasekonfiguration auswählen (z . B. /p:Configuration="Windows 7 Release"). Eine Liste der unterstützten Releasekonfigurationen finden Sie unter Erstellen eines Treibers. Die Plattform kann Win32 (für x86) oder x64 sein (z. B. /p:Platform=Win32).

Hinweis

Überprüfen Sie unbedingt den Energieverwaltungsplan Ihres Computers, um sicherzustellen, dass der Computer während der Analyse nicht in einen Energiesparzustand wechselt.

Parameter

/scan

Überprüft den Quellcode des Treibers auf Funktionsrollentypdeklarationen. Informationen zum Deklarieren der vom Treiber bereitgestellten Rückruffunktionen und Dispatchroutinen finden Sie unter Verwenden von Funktionsrollentypdeklarationen. Während dieser Überprüfung versucht SDV, die Einstiegspunkte des Treibers zu erkennen, die er zum Überprüfen des Treibers benötigt. Es zeichnet die Ergebnisse des Scans in Sdv-map.h auf, eine Datei, die sie im Projektverzeichnis des Treibers erstellt.

Weitere Informationen finden Sie unter Vorbereiten des Quellcodes.

/check:Regelregel | ,...

Startet eine Überprüfung mit den angegebenen Regeln. Sie können mehrere Regeln angeben, indem Sie jede Regel durch ein Komma trennen. Führen Sie den Befehl /check: aus, und geben Sie die Visual Studio-Projektdatei des Treibers (*.vcxproj) an.

Regel ist der Name einer Regel oder eines Regelnamenmusters, das Platzhalterzeichen (*) enthält, um ein oder mehrere Zeichen darzustellen. Wenn sie allein verwendet wird, stellt das Platzhalterzeichen (*) alle Regeln dar.

/check:RuleList.sdv

Startet eine Überprüfung mit den Regeln in der angegebenen Regellistendatei. Sie können nur eine Datei mit diesem Parameter auflisten. In der Regellistendatei kann jede Zeile der Name einer Regel oder ein Platzhalterzeichen (*) sein, das alle SDV-Regeln darstellt. Führen Sie den Befehl "/check:RuleList.sdv" aus, und geben Sie die Visual Studio-Projektdatei des Treibers an (*.vcxproj).

RuleList.sdv ist der vollqualifizierte Pfad und Dateiname einer Regellistendatei. Die Datei muss die Dateinamenerweiterung SDV aufweisen. Sofern sich die Datei nicht im lokalen Verzeichnis befindet, ist der Pfad erforderlich. Wenn der Pfad oder Dateiname Leerzeichen enthält, müssen Sie RuleList einschließen .sdv in Anführungszeichen.

Wenn Sie die Option "/check:" angeben, ohne eine Regel anzugeben, wird SDV mit dem Standardregelsatz für das Treibermodell ausgeführt.

/lib

Verarbeitet die Bibliothek im aktuellen Verzeichnis. SDV ruft MSBuild.exe auf, um die Bibliothek für die externe Verwendung zu kompilieren und zu erstellen, und generiert die Dateien, die sie zum Einschließen der Bibliothek in die Treiberüberprüfung benötigen.

Verwenden Sie diesen Parameter, bevor Sie Treiber überprüfen, für die die Bibliothek erforderlich ist. Führen Sie den Befehl "msbuild /t:sdv /p:Input="/lib" aus, und geben Sie die Visual Studio-Projektdatei (*.vcxproj) für die Bibliothek an.

Weitere Informationen zur Verwendung und Wirkung des Parameters "/lib " finden Sie unter "Library Processing in Static Driver Verifier".

/ansehen

Öffnet statische Treiberüberprüfung. Führen Sie /view-Befehle aus, und geben Sie die Visual Studio-Projektdatei des Treibers (*.vcxproj) an.

Die Ergebnisse sind verfügbar, sobald eine Überprüfung abgeschlossen ist, und bleiben verfügbar, bis Sie einen /clean-Befehl verwenden, um die SDV-Dateien aus dem Projektverzeichnis des Treibers zu löschen.

/sauber

Löscht SDV-Dateien aus dem Verzeichnis. Da diese Dateien verwendet werden, um die Anzeige des Berichts "Statische Treiberüberprüfung" zu generieren, löscht der Befehl "/clean " auch den Bericht der Überprüfung.

Führen Sie einen /clean-Befehl aus, und geben Sie die Visual Studio-Projektdatei (*.vcxproj) für den Treiber oder die Bibliothek an. Der Befehl löscht SDV-Dateien nur für das angegebene Projekt.

Führen Sie vor jeder Überprüfung einen /clean-Befehl für ein Treiberprojekt aus.

Führen Sie einen /clean-Befehl für eine Bibliothek aus, wenn die Bibliotheksdateien veraltet sind, z. B. wenn sich der Bibliothekscode ändert.

Ein /clean-Befehl entfernt die Datei Sdv-map.h nicht, wenn das genehmigte Flag in der Datei Sdv-map.h (Approved=true) auf "true" festgelegt ist. SDV kann diese Datei dann für zukünftige Überprüfungen verwenden.

/?

Zeigt die Verwendung für SDV-Befehle an. Befehle, die diesen Parameter verwenden, müssen nicht in einem Buildumgebungsfenster ausgeführt werden.

Kommentare

Wenn Msbuild /t:/sdv p:/Input= /? ohne Parameter ausgeführt wird, wird die Verwendung für die SDV-Befehle angezeigt.

Ein /clean-Befehl löscht die Dateien, die SDV zum Erstellen des Statischen Treiberüberprüfungsberichts für eine Überprüfung verwendet. Nach dem Ausführen dieses Befehls ist der Bericht "Statische Treiberüberprüfung" für die Überprüfung nicht mehr verfügbar.

Beispiele

So führen Sie SDV mit allen Regeln für die Treiberdateien im lokalen Verzeichnis für das Mydriver-Projekt aus:

msbuild /t:sdv /p:Inputs="/check:*" mydriver.VcxProj /p:Configuration="Windows 7 Release"/p:Platform=Win32

So führen Sie SDV mithilfe der CancelSpinLock-Regel für die Treiberdateien im lokalen Verzeichnis aus:

msbuild /t:sdv /p:Inputs="/check:CancelSpinLock" mydriver.VcxProj /p:Configuration="Windows 7 Release" /p:Platform=Win32

So führen Sie SDV mithilfe der Regel aus, die in der Regellistedatei "Rules1.sdv" im Verzeichnis "D:\SDV" angegeben ist:

msbuild /t:sdv /p:Inputs="/check:D:\SDV\Rules1.sdv" mydriver.VcxProj /p:Configuration="Windows 7 Release" /p:Platform=Win32

Um SDV erneut auszuführen, verwenden Sie dieses Mal die Option "/clean":

msbuild /t:sdv /p:Inputs="/clean" mydriver.VcxProj /p:Configuration="Windows 7 Release"/p:Platform=Win32

So zeigen Sie die Überprüfung statischer Treiber an, damit Sie die Ergebnisse für die letzte Überprüfung des Treibers im lokalen Verzeichnis anzeigen können:

msbuild /t:sdv /p:Inputs="/view" mydriver.VcxProj /p:Configuration="Windows 7 Release" /p:Platform=Win32

Verwenden der Statischen Treiberüberprüfung zum Auffinden von Fehlern in Windows-Treibern