Bekannte Probleme mit statischer Treiberüberprüfung – Windows 10 Version 1809

Auf dieser Seite werden häufige Probleme beschrieben, die bei der Verwendung des SdV-Tools (Static Driver Verifier) im Windows Driver Kit (WDK) auftreten können. Die folgenden Informationen beziehen sich insbesondere auf die Version des Tools, das mit Windows 10 October 2018 Update (Version 1809) ausgeliefert wird.

Informationen zu bekannten SDV-Problemen mit dem neuesten offiziellen WDK finden Sie unter BEKANNTE PROBLEME .

InterceptedBuild-Fehler

Primäres Symptom: SDV schlägt mit FATAL ERROR: Unrecoverable error in InterceptedBuild stagefehl.

Wenn Sie die DVL-Datei untersuchen, sehen Sie einen AssessmentScore Wert mit ScoreName="[driverName].[architecture].SDV.NA.Reason" und ScoreUnit="Unrecoverable error in InterceptedBuild stage."

Führen Sie bei InterceptedBuild-Fehlern die folgenden Schritte aus, um das Problem zu diagnostizieren.

  1. Führen Sie SDV über die Visual Studio 2017 Native Tools-Befehlszeile mit dem Flag /debug erneut aus. Ausführliche Informationen zu Befehlsoptionen finden Sie unter Statische Treiberüberprüfungsbefehle.

    a. Führen Sie zunächst die Bibliotheksfunktion von SDV für alle abhängigen Bibliotheksprojekte aus. Beispiel: msbuild /p:Configuration=Release /p:Platform=x64 /t:sdv /p:inputs="/lib /debug".

    b. Führen Sie dann SDV für das Treiberprojekt selbst aus. Beispiel: msbuild /p:Configuration=Release /p:Platform=x64 /t:sdv /p:inputs="/check /debug"

  2. Vergewissern Sie sich, dass der Fehler in der InterceptedBuild-Phase erneut auftritt.

  3. Navigieren Sie zu dem sdv Ordner, der im Treiberordner generiert wird, wenn Sie SDV ausführen.

  4. Öffnen Sie smvcl.log , und suchen Sie nach dem Ausdruck "interner Compilerfehler".

    a. Wenn eine Fehlermeldung einen internen Compilerfehler und einen Ausdruck ähnlich dem schwerwiegenden Fehler C1001 enthält: Im Compiler ist ein interner Fehler aufgetreten. (Compilerdatei "msc1.cpp", Zeile 1511) ist vorhanden, dies ist ein bekanntes Problem, das errata (errata ID 40705) erfordert. Wenn Sie weitere Unterstützung benötigen, senden Sie bitte eine E-Mail an stlogohelp@microsoft.com.

    b. Wenn eine Fehlermeldung mit einem internen Compilerfehler vorhanden ist, aber nicht wie oben dargestellt aussieht, erfordert dies wahrscheinlich eine Errata, aber möglicherweise kein vorhandenes bekanntes Problem. E-Mail-Adresse: stlogohelp@microsoft.com

    c. Wenn keine Zeilen mit internem Compilerfehler angezeigt werden, suchen Sie nach Zeilen, die mit dem Fehler beginnen. Dies kann probleme sein, die errata erfordern. E-Mail-Adresse: stlogohelp@microsoft.com

  5. Öffnen Sie smvlink1.log, und suchen Sie nach dem Ausdruck interner Compilerfehler.

    a. Wenn eine Fehlermeldung mit internem Compilerfehler und slamcl: error: in Phase 2: Out of memory vorhanden ist, ist dies ein bekanntes Problem, das eine Errata erfordert.

    b. Wenn keine Zeilen mit internem Compilerfehler angezeigt werden, suchen Sie nach Zeilen, die mit dem Fehler beginnen. Dies kann probleme sein, die errata erfordern. E-Mail-Adresse: stlogohelp@microsoft.com

    c. Wenn keine der oben genannten Informationen angezeigt wird, wenden Sie sich an MSFT, um Unterstützung zu benötigen.

Wenn Sie MSFT zur Unterstützung kontaktieren möchten, stellen Sie sicher, dass der Quellcode nicht freigegeben wird, indem Sie Folgendes ausführen:

  1. Führen Sie SDV mit aktiviertem /debug-Flag aus, und leiten Sie die Ausgabe an eine Textdatei weiter.

  2. Navigieren Sie zum sdv Ordner im Treiberverzeichnis, und führen Sie die folgenden Befehle aus, um Buildergebnisse zu löschen, die Möglicherweise Quellen verfügbar machen:

    del /s *.obj
    del /s *.rawcfg*
    del /s *.li
    del /s *.pdb
    del /s *.sys
    
  3. Senden Sie die folgenden Dateien an stlogohelp@microsoft.com:

    a. Die Textdatei mit der Ausgabe der Ausführung von SDV

    b. Die Datei smexecute-NormalBuild.log

    c. Die Datei smvexecute-InterceptedBuild.log

    d. Der Unterordner "sdv"

Visual Studio C++ 2013-Runtimes nicht vorhanden

Primäres Symptom: Beim Ausführen von SDV auf einem System ohne die Visual Studio C++ 2012- und 2013-Runtimes werden dem Benutzer möglicherweise Fehler in Popupfeldern angezeigt, z. B. Die Codeausführung kann nicht fortgesetzt werden, da [MSVCR110.dll oder VCOMP110.dll] nicht gefunden wurde. Durch die Neuinstallation des Programms kann dieses Problem behoben werden.

In diesem Fall besteht die Lösung in der Installation von x86 und x64 Visual C++ Redistributable für Visual Studio 2012 und 2013.

Bewährte Methode: Verwenden von Visual Studio 2017 Version 15.8

Standardmäßig erstellt die Codeanalyse den Treiber nicht automatisch in Visual Studio 15.7. Wenn der Treiber von generierten Binärdateien abhängt, kann dies zu einem Fehler im Ausgabebereich führen. Stattdessen wird die Verwendung von Version 15.8 empfohlen.

Fehler bei der DVL-Generierung nach dem Entfernen der Konfiguration aus einem Projekt

Primäres Symptom: Nach dem Entfernen einer Konfiguration aus einem Projekt über das Configuration Manager-Fenster wird dem Benutzer die folgende Meldung angezeigt, wenn er Treiberüberprüfungsprotokoll erstellen ausgewählt hat:Please select a driver project. Driver Verification Log cannot be created for the selected platform tool set: 'v100'"

Problemumgehung:

  1. Sichern Sie Ihre Projektdatei, und öffnen Sie dann die Projektdatei in einem Text-Editor.

  2. Suchen Sie im \<PropertyGroup Label="Globals"\> Abschnitt nach zwei XML-Tags: eines mit dem Format \<Configuration\>\[Configuration type\]\</Configuration\> und eines mit dem Format \<Platform Condition="'$(Platform)' == ''"\>\[Architecture\]\</Platform\>, wobei \[Configuration type\] und \[Architecture\] die Standardkonfiguration und das Release für diesen Projekttyp sind.

  3. Aktualisieren \[Configuration type\] Und \[Architecture\] in Werte, die für Ihr Projekt geeignet sind. Wenn Sie beispielsweise die Win32-Plattform entfernt haben, können Sie stattdessen auf x64 aktualisieren \[Architecture\] .

Alternative Problemumgehung:

  1. Öffnen Sie eine Visual Studio 2017 Native Tools-Eingabeaufforderung.

  2. Navigieren Sie zum Treiberordner.

  3. Führen Sie msbuild [Your Project] /p:Configuration=[Configuration type] /p:Platform=[Architecture] /t:dvlaus, wobei \[Your Project\] die vcxproj-Datei ist, \[Configuration type\] eine gültige Konfiguration wie Release ist und \[Architecture\] eine gültige Architektur wie x64 ist.

DIE DVL-Generierung funktioniert nicht auf ServerCore. Verwenden Sie die Server-GUI

Der Logotest für statische Tools schlägt bei der Ausführung fehl. Beim Überprüfen der Testprotokolle wird ein Fehler ähnlich wie Failed to load 'C:\hlk\JobsWorkingDir\Tasks\WTTJobRun4749E809-0166-E811-8368-F4521454FFE1\Devfund_DvlTest.dll'. (Could not load managed test module because RoMetadata.dll could not be found)

Stellen Sie sicher, dass das TAEF-Paket bereitgestellt oder RoMetadata.dll an einem Speicherort in Ihrer PATH-Umgebungsvariablen bereitgestellt wird.

Das Schlüsselsymptom ist der Fehler beim Laden RoMetadata.dll.

Wenn Sie über eine Server-GUI-Installation mit derselben Architektur und Windows-Version wie Ihre ServerCore-Installation verfügen, kopieren Sie die RoMetadata.dll Datei von der Server-GUI auf ServerCore. Die DLL befindet sich im Ordner System32 (z. C:\Windows\System32B. ) und sollte im selben Ordner auf dem ServerCore-Computer abgelegt werden. Dadurch sollte der Test auf ServerCore ausgeführt werden können. Wenn weiterhin Probleme auftreten, lesen Sie die nächste Problemumgehung.

Die zweite Problemumgehung besteht darin, auf der Server-GUI auszuführen und das Paket dann mit dem Paket zusammenzuführen, das die Ergebnisse von Server Core enthält. Informationen zum Zusammenführen von Paketen finden Sie unter Zusammenführen von Paketen.

Statische Treiberüberprüfung schlägt fehl, wenn lib.exe/iwrap.exe mit 0xc0000142 Fehler beendet wird

Die Datei smvbuild.log enthält eine Meldung ähnlich dem folgenden Fehler:

c:\Program Files\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(1144,5): error MSB6006: "Lib.exe" exited with code -1073741502.

Done executing task "LIB" -- FAILED.

Dieses Problem ist bekannt. Wenn dieses Problem Ihre WHCP-Zertifizierung blockiert, verwenden Sie bitte errata 41600.