Unterstützte Treiber
Damit SDV einen Treiber überprüfen kann, muss es in der Lage sein, den Treibercode zu interpretieren, 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 an 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 dies nicht erfüllt, kann SDV möglicherweise nicht ausgeführt werden, und in seltenen Fällen meldet es falsch positive oder falsch negative Ergebnisse aufgrund von Fehlinterpretation.
Grundlegende Treibereigenschaften
SDV kann nur Treiber mit den folgenden Merkmalen überprüfen:
SDV überprüft Treiber und Bibliotheken, die in C und C++ geschrieben sind.
SDV führt die vollständige Überprüfung nur für KMDF-kompatible und WDM-kompatible Gerätetreiber (Funktionstreiber, Filtertreiber und Bustreiber), NDIS-Treiber (Filter-, Miniport- und Protokolltreiber) und Storport-Treiber durch.
SDV versucht, generische Eigenschaften (z. B. NullCheck) auf Treibern zu überprüfen, die nicht in die oben genannten Kategorien passen.
SDV kann WDM-Treiber, die ihre Treiberrückruffunktionen deklarieren, mithilfe der WDM-Funktionsrollentypen überprüfen. Informationen zum Deklarieren von Funktionen finden Sie unter Deklarieren von Funktionen mithilfe von Funktionsrollentypen für WDM-Treiber.
SDV kann Treiber überprüfen, die aus dem Kernelmodustreiberframework erstellt werden, vorausgesetzt, Sie deklarieren jede Rückruffunktion mithilfe eines SDV-KMDF-Rückruffunktionsrollentyps. Weitere Informationen finden Sie unter Deklarieren von Funktionen mithilfe von Funktionsrollentypen für KMDF-Treiber.
SDV kann NDIS-Treiber überprüfen, vorausgesetzt, Sie kommentieren jede Rückruffunktion mit der Funktionsdeklaration, indem Sie einen SDV-NDIS-Rückruffunktionstyp verwenden. Weitere Informationen finden Sie unter Deklarieren von Funktionen mithilfe von Funktionsrollentypen für NDIS-Treiber.
SDV kann Storport-Treiber überprüfen, sofern Sie jede Rückruffunktion mit der Funktionsdeklaration kommentieren. Dazu verwenden Sie einen SDV-Storport Rückruffunktionstyp. Weitere Informationen finden Sie unter Deklarieren von Funktionen mithilfe von Funktionsrollentypen für Storport-Treiber.
Grundlegende Treiberanforderungen
Damit SDV einen WDM-Treiber überprüfen kann, muss der Treiber:
Schließen Sie Wdm.h oder Ntddk.h ein (Wdm.h ist eine Teilmenge von Ntddk.h).
Erstellen Sie Geräteobjekte mithilfe von Methoden, die unter Einführung in Geräteobjekte und unten beschrieben werden.
Verwenden Sie eine Unload-Routine, die wie unter Schreiben einer Entladeroutine empfohlen geschrieben wird.
Deklarieren Sie jede Dispatchfunktion mithilfe einer Funktionsrollentypdeklaration, die unter Verwenden von Funktionsrollentypdeklarationen beschrieben wird. Informationen zu den WDM-Rollentypen und den _Dispatch_type_ (Typ) -Anmerkungen finden Sie unter Deklarieren von Funktionen mithilfe von Funktionsrollentypen für WDM-Treiber.
Damit SDV einen KMDF-Treiber überprüfen kann, muss der Treiber:
Schließen Sie Wdf.h und Ntddk.h ein.
Erstellen Sie die unter Verwenden des Frameworks zum Entwickeln eines Treibers beschriebenen KMDF-Objekte.
Kommentieren Sie jede Rückruffunktion mithilfe eines SDV-KMDF-Rückruffunktionsrollentyps, der unter Verwenden von Funktionsrollentypdeklarationen beschrieben wird. Eine Liste der unterstützten Rollentypen finden Sie unter KMDF-Funktionsdeklarationen der Statischen Treiberüberprüfung.
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 , um NDIS-Treiber zu erstellen.
Kommentieren Sie jede Rückruffunktion mit einem SDV-NDIS-Rückrufrollentyp, wie unter Verwenden von Funktionsrollentypdeklarationen beschrieben. Eine Liste der unterstützten Rollentypen finden Sie unter NDIS-Funktionsdeklarationen der Statischen Treiberüberprüfung.
Darüber hinaus kann SDV Treiber überprüfen, die Folgendes unterstützen:
Namen reservierter Funktionen
Die SDV-Überprüfungs-Engine funktioniert nicht ordnungsgemäß, wenn der Treiber- oder Bibliothekscode die gleichen Funktionsnamenmuster verwendet, die SDV intern verwendet.
Insbesondere interpretiert SDV Code nicht ordnungsgemäß, wenn:
Der Code enthält Funktionsnamen, die mit __init beginnen und auf die mindestens eine ganze Zahl folgt, 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, aber das Ergebnis lautet Nicht unterstütztes Feature (NSF). Weitere Informationen zu SDV-Ergebnissen finden Sie unter Interpreting Static Driver Verifier Results.For more information about SDV results, see Interpreting Static Driver Verifier Results.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für