Unterstützte Treiber

Damit SDV einen Treiber überprüfen kann, muss er den Treibercode interpretieren können, insbesondere die Einstiegspunkte des Treibers und den Code in Funktionen und Routinen, die die erforderliche Treiberfunktionalität unterstützen.

In den folgenden Abschnitten werden die grundlegenden Anforderungen für Treiber und die spezifische Syntax beschrieben, die SDV von den überprüften Treibern erwartet. SDV überprüft nicht, ob Treiber diese Anforderungen erfüllen, aber wenn der Treiber nicht erfüllt, kann SDV nicht ausgeführt werden und meldet in seltenen Fällen falsch positive oder falsche negative Ergebnisse aufgrund von Fehlinterpretation.

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.

Grundlegende Treibermerkmale

SDV kann nur Treiber mit den folgenden Merkmalen überprüfen:

Grundlegende Treiberanforderungen

Damit SDV einen WDM-Treiber überprüfen kann, muss der Treiber:

Damit SDV einen KMDF-Treiber überprüfen kann, muss der Treiber:

Damit SDV einen NDIS-Treiber überprüfen kann, muss der Treiber:

  • Schließen Sie Ndis.h und Ntddk.h ein.

  • Befolgen Sie die Richtlinien im Netzwerkentwurfshandbuch zum Erstellen von NDIS-Treibern.

  • Kommentieren Sie jede Rückruffunktion mithilfe eines SDV-NDIS-Rückruffunktionsrollentyps, wie unter Verwendung von Funktionsrollentypdeklarationen beschrieben. Eine Liste der unterstützten Rollentypen finden Sie unter Deklarationen der Statischen Treiberüberprüfung NDIS-Funktion.

Darüber hinaus kann SDV Treiber überprüfen, die Folgendes unterstützen:

Reservierte Funktionsnamen

Das SDV-Überprüfungsmodul funktioniert nicht ordnungsgemäß, wenn der Treiber- oder Bibliothekscode dieselben Funktionsnamenmuster verwendet, die SDV intern verwendet.

Insbesondere interpretiert SDV Code nicht ordnungsgemäß, wenn:

  • Der Code enthält Funktionsnamen, die mit __init beginnen und auf eine oder mehrere ganze Zahlen folgen, z. B. __init123.

  • Der Code enthält Funktionsnamen, die mit sdv_ beginnen, z. B. sdv_Func, oder die Zeichenfolge _sdv_, z. B. Func_sdv_ oder Func_sdv_foo.

  • Die Bibliothek verwendet eine .def Datei, um eine exportierte Funktion umzubenennen, und der externe Name entspricht dem Namen einer anderen statischen Funktion in der Bibliothek.

Wenn der Treibercode oder Bibliothekscode diese Elemente enthält, versucht SDV, den Treiber zu überprüfen oder die Bibliothek zu verarbeiten, das Ergebnis wird jedoch nicht unterstützt Feature (NSF). Weitere Informationen zu SDV-Ergebnissen finden Sie unter Interpreting Static Driver Verifier Results.