Freigeben über


Verwenden von KMDF Verifier

Das Framework bietet integrierte Überprüfungsfunktionen, die Sie zum Testen eines ausgeführten KMDF-Treibers verwenden können. Diese Funktion, die als KMDF Verifier bezeichnet wird, überprüft den Zustand des Treibers und die Argumente, die der Treiber an Frameworkobjektmethoden übergibt. Sie können die Überprüfung des Frameworks selbst oder zusammen mit dem allgemeinen Driver Verifier(Verifier.exe)-Tool verwenden.

Wenn KMDF Verifier aktiviert ist, überprüft das Framework die Sperrerfassung und Hierarchien, stellt sicher, dass Aufrufe des Frameworks an der richtigen IRQL erfolgen, die korrekte E/A-Abbruch- und Warteschlangenverwendung überprüft und sichergestellt wird, dass der Treiber und das Framework den dokumentierten Verträgen folgen. Es kann auch Nichtspeicherbedingungen simulieren, damit der Treiberentwickler testen kann, ob der Treiber ordnungsgemäß reagiert, ohne abstürzen, hängend oder nicht entladen zu müssen.

Wenn KMDF Verifier aktiviert ist, wechselt das Framework in den Debugger, wenn ein Standardtimeoutzeitraum von 60 Sekunden abläuft, bevor einige der zuvor beschriebenen Ereignisse abgeschlossen wurden. An diesem Punkt können Sie das Problem debuggen oder "g" im Debugger eingeben, um den Timeoutzeitraum neu zu starten. Sie können den Standardtimeoutzeitraum ändern, indem Sie den Registrierungswert "DbgWaitForSignalTimeoutInSec" verwenden, der unter "Controlling the Verifier's Behavior" beschrieben wird.

Es wird empfohlen, treiberprüfer (Verifier.exe) während des Tests auszuführen und Ihren eigenen Treiber und wdf01000.sys zur Prüfliste hinzuzufügen.

Hinweis

KMDF Verifier wird automatisch aktiviert, wenn die Einstellungen der Treiberüberprüfung /standard verwendet werden. Wenn Sie anstelle der /standard Treiberüberprüfungseinstellung verwenden, beachten Sie/flags, dass unter Windows 10, Version 1803 oder neueren Builds, /flags die veraltet /ruleclassessind. Die Regelklasse für WDF ist 34. Verwenden Sie die Verwendung/ruleclasses 34, um die WDF-Überprüfung zu aktivieren, wenn /standard sie nicht verwendet wird.

Sie können auch die WDF Verifier Control Application (WdfVerifier.exe) verwenden, um KMDF Verifier zu aktivieren und zu deaktivieren.

Aktivieren und Deaktivieren der integrierten Überprüfung des Frameworks

Mit diesem Verfahren können Sie KMDF Verifier manuell aktivieren:

  1. Wenn Ihr Treiber bereits geladen ist, verwenden Sie Geräte-Manager, um das Gerät zu deaktivieren. Wenn Sie das Gerät deaktivieren, wird der Treiber entladen.

  2. Verwenden Sie "RegEdit", um "VerifierOn" auf einen Wert ungleich Null im Unterschlüssel "Parameters\Wdf" des Schlüssels "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services" in der Windows-Registrierung festzulegen. Ein Wert ungleich Null gibt an, dass KMDF Verifier aktiviert ist.

    Möglicherweise müssen Sie VerifierOn manuell zum Unterschlüssel hinzufügen, wenn er noch nicht vorhanden ist.

  3. Verwenden Sie Geräte-Manager, um das Gerät wiederzuverwenden, wodurch der Treiber geladen wird.

  4. Wenn der Treiber WdfDriverCreate aufruft, überprüft das Framework die Registrierung und aktiviert die Überprüfung des Frameworks, wenn VerifierOn einen Wert ungleich Null aufweist.

Führen Sie zum Deaktivieren der Überprüfung des Frameworks die gleichen Schritte aus, legen Sie jedoch den Wert von VerifierOn auf Null fest.

Um festzustellen, ob die Überprüfung des Frameworks aktiviert ist, legen Sie einen Haltepunkt an einem Speicherort fest, nachdem Ihr Treiber WdfDriverCreate aufgerufen und den Erweiterungsbefehl !wdfdriverinfo-Debugger verwendet:

!wdfkd.wdfdriverinfo Ihr Treibername> **** 0x1 <

Weitere Informationen zu den Debuggererweiterungsbefehlen finden Sie unter Debuggererweiterungen für frameworkbasierte Treiber.

Steuern des Verhaltens der Prüfer

Es wird empfohlen, die WDF Verifier-Steuerelementanwendung zu verwenden, um die folgenden Optionen zu steuern. Sie können jedoch die folgenden Werte in der Registrierung direkt ändern.

Die relevanten Werte befinden sich unter dem Unterschlüssel "Parameters\Wdf " des Schlüssels "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services ".

VerifyOn (REG_DWORD)
Legen Sie diesen Wert auf einen Wert ungleich Null fest, um das WDFVERIFY-Makro zu aktivieren.

DbgBreakOnError (REG_DWORD)
Wenn dieser Wert auf einen Wert ungleich Null festgelegt ist, wird das Framework jedes Mal, wenn ein Treiber WdfVerifierDbgBreakPoint aufruft, in den Debugger (sofern verfügbar) unterteilt.

DbgWaitForSignalTimeoutInSec (REG_DWORD)
Ab Windows 8 kann der Treiber den Standardtimeoutzeitraum ändern, indem "DbgWaitForSignalTimeoutInSec" festgelegt ist, wenn "VerifierOn" und "DbgBreakOnError" auf "Nonzero"-Werte festgelegt sind.

VerifierAllocateFailCount (REG_DWORD)
Wenn dieser Wert auf einen Wert n festgelegt ist, schlägt das Framework fehl, jeden Versuch, Speicher für die Objekte des Treibers nach der nth-Zuordnung zuzuweisen.

TrackHandles (REG_MULTI_SZ)
Wenn dieser Wert auf eine Liste mit mindestens einem Typnamen von Framework-Objekthandles festgelegt ist, verfolgt das Framework Verweise auf alle Objekthandles, die den angegebenen Handletypen entsprechen.

EnhancedVerifierOptions (REG_DWORD)
Nur KMDF

Enthält eine Bitmap, die Sie verwenden können, um optionale Features der Überprüfung des Frameworks zu aktivieren.

VerifyDownLevel (REG_DWORD)
Wenn dieser Wert auf einen Wert ungleich Null festgelegt ist und der Treiber mit einer Version des Frameworks erstellt wurde, das älter als die aktuelle Version ist, enthält die Überprüfung des Frameworks Tests, die nach dem Erstellen des Treibers hinzugefügt wurden.

Wenn Sie die oben genannten Registrierungswerte festlegen, löschen Sie sie, wenn sie nicht mehr benötigt werden.

Vollständige Beschreibungen dieser Registrierungswerte finden Sie unter Registrierungswerte für das Debuggen von Framework-basierten Treibern.