Überprüfen des Treibers

Das Überprüfen des Treibers mithilfe der Befehlsoption /scan ist optional. Wenn Sie vor der Überprüfung des Treibers keine Überprüfung durchführen, überprüft SDV die Funktionsrollentypdeklarationen und erstellt eine Sdv-map.h-Datei, wenn Sie den Treiber überprüfen.

Während dieser Überprüfung versucht SDV, die Treibereinstiegspunkte zu erkennen, die zum Überprüfen des Treibers erforderlich sind. Es zeichnet die Ergebnisse der Überprüfung in Sdv-map.h auf, einer Datei, die im Quellenverzeichnis des Treibers erstellt wird.

Es ist jedoch sehr wichtig, dass Sie diese Datei überprüfen, entweder nach dem Scanschritt oder nach der Überprüfung, um sicherzustellen, dass SDV die richtigen Einstiegspunkte erkannt hat. Wenn die Einstiegspunkte fehlen oder falsch sind, ist die Überprüfung möglicherweise nicht zuverlässig. Was noch wichtiger ist: Wenn SDV keine Einstiegspunkte erkennen kann, kann es den Treiber nicht überprüfen.

Sie müssen nur einmal für jeden Treiber überprüfen. Danach behält SDV die Datei Sdv-map.h für den Treiber für zukünftige Überprüfungen bei.

Untersuchen der Datei "Sdv-map.h"

Nachdem Sie einen Scanbefehl ausgeführt oder den Treiber überprüft haben, öffnen Sie die Datei Sdv-map.h, und untersuchen Sie die Datei. Sdv-map.h ist eine formatierte Textdatei. Sie können es in jedem Text-Editor lesen, z. B. Editor.

Vergleichen Sie den Inhalt der Datei Sdv-map.h mit den deklarierten Funktionsrollentypen für Ihren Treiber. Untersuchen Sie den Inhalt der Datei Sdv-map.h, um festzustellen, dass die Rückruf- oder Dispatchroutinen des Treibers ordnungsgemäß identifiziert wurden.

Die Datei Sdv-map.h ist nicht erforderlich, um alle Einstiegspunkte in Ihrem Treiber aufzulisten. nur die Einstiegspunkte für die IRP-Hauptfunktionscodes oder Funktionsrollentypen, die in der Analyse verwendet werden. Fügen Sie der Datei keine IRP-Hauptfunktionscodes oder Funktionsrollentypen hinzu.

Ausführliche Informationen zur Datei Sdv-map.h finden Sie unter Sdv-map.h. Das Format wird unter Format der Datei Sdv-map.h beschrieben. Die Fehler, die in der Datei "Sdv-map.h" auftreten können, werden unter Genehmigen der Datei "Sdv-map.h" beschrieben.

Das folgende Beispiel zeigt den Inhalt der Datei Sdv-map.h aus Fail_driver1, einem BEISPIEL-WDM-Treiber im Verzeichnis tools\sdv\samples\fail_drivers\wdm.

//Approved=false
//DriverAddDevice
#define fun_AddDevice DriverAddDevice
//DriverEntry
#define fun_DriverEntry DriverEntry
//DriverUnload
#define fun_DriverUnload DriverUnload
//CompletionRoutine
#define fun_IO_COMPLETION_ROUTINE_1 CompletionRoutine
//DpcForIsrRoutine
#define fun_IO_DPC_ROUTINE_1 DpcForIsrRoutine
//DispatchCreate
#define fun_IRP_MJ_CREATE DispatchCreate
//DispatchPnp
#define fun_IRP_MJ_PNP DispatchPnp
//DispatchPower
#define fun_IRP_MJ_POWER DispatchPower
//DispatchRead
#define fun_IRP_MJ_READ DispatchRead
//DispatchSystemControl
#define fun_IRP_MJ_SYSTEM_CONTROL DispatchSystemControl
//InterruptServiceRoutine
#define fun_KSERVICE_ROUTINE_1 InterruptServiceRoutine

Korrigieren der Datei "Sdv-map.h"

Korrigieren Sie alle Fehler in der Datei Sdv-map.h, bevor Sie einen Treiber überprüfen. SDV überprüft einen Treiber, auch wenn die Datei Sdv-map.h falsch oder nicht genehmigt ist, aber die Ergebnisse der Überprüfung sind möglicherweise nicht zuverlässig. Wenn Sie beispielsweise die Dispatch- oder Rückrufroutine eines Treibers nicht mithilfe des entsprechenden Funktionsrollentyps deklarieren, wird die Treiberroutine nicht in der Datei Sdv-map.h angezeigt. Folglich könnten Sie Fehler im Code finden, da SDV Regeln, die Funktionsrollentypen verwenden, für nicht zutreffend erachtet, auch wenn Sie diese Regeln im Rahmen der Überprüfung angegeben haben.

Um eine Sdv-map.h-Datei zu korrigieren, stellen Sie sicher, dass die Dispatch- oder Rückrufroutinen Ihres Treibers mithilfe der entsprechenden Funktionsrollentypen deklariert werden. Überprüfen Sie dann erneut den Treiber, und überprüfen Sie, ob er in der Datei Sdv-map.h angezeigt wird.

Genehmigen der Datei "Sdv-map.h"

Nachdem Sie festgestellt haben, dass die Datei Sdv-map.h richtig ist, können Sie die Datei genehmigen. Wenn Sie keine Änderungen an der Datei vorgenommen haben, müssen Sie sie nicht genehmigen.

SDV überprüft einen Treiber, auch wenn die Datei Sdv-map.h nicht genehmigt ist.

Um die Datei Sdv-map.h zu genehmigen, ändern Sie in der ersten Zeile der Datei Folgendes:

//Approved=false

in:

//Approved=true

Sie müssen die Datei Sdv-map.h nur einmal für jeden Treiber genehmigen. Danach behält SDV die genehmigte Sdv-map.h-Datei für den Treiber für zukünftige Überprüfungen bei. Wenn SDV Ihren Quellcode erneut auf Funktionsrollentypdeklarationen überprüfen soll, löschen Sie einfach die Datei.

Das folgende Beispiel zeigt die genehmigte Sdv-map.h-Datei für den KMDF-Beispieltreiber, Fail_Driver1. SDV verwendet die Datei Sdv-map.h, um die deklarierten Rückruffunktionen des Treibers den Funktionsrollentypen zuzuordnen, die SDV für die Überprüfung benötigt.

//Approved=true
//DriverEntry
#define fun_DriverEntry DriverEntry
//EvtDriverDeviceAdd
#define fun_WDF_DRIVER_DEVICE_ADD EvtDriverDeviceAdd
//EvtIoDeviceControl
#define fun_WDF_IO_QUEUE_IO_DEVICE_CONTROL EvtIoDeviceControl
//EvtIoInternalDeviceControl
#define fun_WDF_IO_QUEUE_IO_INTERNAL_DEVICE_CONTROL EvtIoInternalDeviceControl
//EvtIoRead
#define fun_WDF_IO_QUEUE_IO_READ EvtIoRead
//EvtRequestCancel
#define fun_WDF_REQUEST_CANCEL_1 EvtRequestCancel