Sdílet prostřednictvím


Známé problémy se statickým ovladačem – Windows 10 verze 1809

Tato stránka popisuje běžné problémy, se kterými se můžete setkat při použití nástroje Static Driver Verifier (SDV) v sadě Windows Driver Kit (WDK). Níže uvedené informace se týkají konkrétně verze nástroje, která se dodává s Windows 10 říjen 2018 Update (verze 1809).

Informace o známých problémech SDV s nejnovějším oficiálním WDK najdete v tématu WDK – Známé problémy .

Selhání nástroje InterceptedBuild

Hlavní příznak: SDV selže s FATAL ERROR: Unrecoverable error in InterceptedBuild stage.

Při zkoumání souboru DVL uvidíte hodnotu AssessmentScore s ScoreName="[driverName].[architecture].SDV.NA.Reason" a ScoreUnit="Unrecoverable error in InterceptedBuild stage."

V případě selhání nástroje InterceptedBuild proveďte následující kroky k diagnostice problému.

  1. Znovu spusťte SDV z příkazového řádku nativních nástrojů sady Visual Studio 2017 s příznakem /debug. Podrobnosti o možnostech příkazů najdete v tématu Příkazy pro ověření statického ovladače.

    a. Nejprve spusťte funkci knihovny SDV u všech závislých projektů knihovny. Například: msbuild /p:Configuration=Release /p:Platform=x64 /t:sdv /p:inputs="/lib /debug".

    b) Potom spusťte SDV na samotném projektu ovladače. Příklad: msbuild /p:Configuration=Release /p:Platform=x64 /t:sdv /p:inputs="/check /debug"

  2. Ověřte, že k selhání dojde znovu ve fázi InterceptedBuild.

  3. Při spuštění SDV přejděte do sdv složky, která se vygeneruje ve složce ovladače.

  4. Otevřete smvcl.log a vyhledejte frázi "vnitřní chyba kompilátoru".

    a. Pokud chybová zpráva obsahující vnitřní chybu kompilátoru a frázi podobnou závažné chybě C1001: V kompilátoru došlo k vnitřní chybě. (soubor kompilátoru "msc1.cpp", řádek 1511) je k dispozici, jedná se o známý problém, který vyžaduje errata (errata ID 40705). Pokud potřebujete další pomoc, pošlete e-mail stlogohelp@microsoft.com.

    b) Pokud existuje chybová zpráva obsahující vnitřní chybu kompilátoru , ale nevypadá jako výše uvedená, pravděpodobně bude vyžadovat errata, ale nemusí to být existující známý problém. E-mail stlogohelp@microsoft.com.

    c. Pokud se nezobrazí žádné řádky obsahující vnitřní chybu kompilátoru, vyhledejte všechny řádky začínající chybou. Tyto problémy můžou nebo nemusí být problémy vyžadující errata. E-mail stlogohelp@microsoft.com.

  5. Otevřete smvlink1.log a vyhledejte frázi vnitřní chyba kompilátoru.

    a. Pokud se zobrazí chybová zpráva obsahující vnitřní chybu kompilátoru a slamcl: chyba: ve fázi 2: nedostatek paměti , jedná se o známý problém, který vyžaduje errata.

    b) Pokud se nezobrazí žádné řádky obsahující vnitřní chybu kompilátoru, vyhledejte všechny řádky začínající chybou. Tyto problémy můžou nebo nemusí být problémy vyžadující errata. E-mail stlogohelp@microsoft.com.

    c. Pokud nevidíte žádnou z výše uvedených možností, spojte se s MSFT s žádostí o podporu.

Pokud chcete kontaktovat MSFT s žádostí o podporu, ujistěte se, že zdrojový kód není sdílený spuštěním následujícího příkazu:

  1. Spusťte SDV s povoleným příznakem /debug a výstup předáte do textového souboru.

  2. Přejděte do sdv složky v adresáři ovladače a spuštěním následujících příkazů vymažte výsledky sestavení, které by mohly vystavit zdroje:

    del /s *.obj
    del /s *.rawcfg*
    del /s *.li
    del /s *.pdb
    del /s *.sys
    
  3. Odešlete následující soubory do stlogohelp@microsoft.com:

    a. Textový soubor s výstupem spuštění SDV

    b) Soubor smexecute-NormalBuild.log

    c. Soubor smvexecute-InterceptedBuild.log

    d. Podsložka "sdv"

Moduly běhového prostředí Visual Studio C++ 2013 nejsou přítomny

cs-CZ: Primární příznak: Při spuštění SDV v systému, který nemá moduly runtime Visual Studio C++ 2012 a 2013, se uživateli mohou zobrazit chyby ve vyskakovacích oknech, jako například "Spuštění kódu nelze pokračovat, protože [MSVCR110.dll nebo VCOMP110.dll] nebyl nalezen." Přeinstalace programu může tento problém vyřešit.

V tomto případě je řešením nainstalovat redistribuovatelné balíčky x86 i x64 Visual C++ pro Visual Studio 2012 a 2013.

Osvědčený postup: Použití sady Visual Studio 2017 verze 15.8

Ve výchozím nastavení analýza kódu nevytvořuje ovladač automaticky v sadě Visual Studio 15.7. Pokud ovladač závisí na vygenerovaných binárních souborech, může to vést k selhání v podokně Výstup . Místo toho doporučujeme místo toho použít verzi 15.8.

Selhání generování DVL po odebrání konfigurace z projektu

Primární příznak: Po odebrání konfigurace z projektu v okně Configuration Manageru se uživateli při výběru příkazu Vytvořit protokol ověření ovladače zobrazí následující zpráva: Please select a driver project. Driver Verification Log cannot be created for the selected platform tool set: 'v100'"

Řešení problému:

  1. Zálohujte soubor projektu a otevřete ho v textovém editoru.

  2. \<PropertyGroup Label="Globals"\> V části vyhledejte dvě značky XML: jednu s formátem \<Configuration\>\[Configuration type\]\</Configuration\> a druhou s formátem \<Platform Condition="'$(Platform)' == ''"\>\[Architecture\]\</Platform\>, kde \[Configuration type\] a \[Architecture\] jsou výchozí konfigurací a vydáním pro tento typ projektu.

  3. Aktualizujte \[Configuration type\] a \[Architecture\] na hodnoty vhodné pro váš projekt. Pokud jste například odebrali platformu Win32, můžete místo toho aktualizovat \[Architecture\] na platformu x64.

Alternativní alternativní řešení:

  1. Otevřete příkazový řádek nativních nástrojů sady Visual Studio 2017.

  2. Přejděte do složky ovladače.

  3. Spusťte msbuild [Your Project] /p:Configuration=[Configuration type] /p:Platform=[Architecture] /t:dvl, kde \[Your Project\] je soubor vcxproj, \[Configuration type\] je platná konfigurace, jako je release, a \[Architecture\] je platná architektura, jako je x64.

Generování DVL nefunguje na ServerCore, použijte GUI serveru

Test loga Statických nástrojů při spuštění selže. Při kontrole testovacích protokolů se zobrazí chyba podobná 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)

Ujistěte se, že balíček TAEF je nainstalován nebo že RoMetadata.dll je umístěn ve vaší PATH proměnné prostředí.

Klíčovým příznakem je selhání načítání RoMetadata.dll.

Pokud máte instalaci grafického uživatelského rozhraní serveru se stejnou architekturou a verzí Windows jako instalace ServerCore, zkopírujte soubor RoMetadata.dll ze serverového grafického uživatelského rozhraní do Jádra serveru. Knihovna DLL se nachází ve složce System32 (například C:\Windows\System32) a měla by být umístěna ve stejné složce na počítači s jádry serveru. To by mělo umožnit, aby se test spustil na jádru serveru. Pokud stále dochází k problémům, projděte si další alternativní řešení.

Druhým alternativním řešením je spuštění v grafickém uživatelském rozhraní serveru a následné sloučení balíčku s balíčkem obsahujícím výsledky z jádra serveru. Informace o slučování balíčků najdete v tématu Sloučení balíčků.

Ověření statického ovladače končí s chybou lib.exe/iwrap.exe a 0xc0000142.

Soubor smvbuild.log obsahuje zprávu podobnou této chybě:

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.

Jedná se o známý problém. Pokud tento problém blokuje certifikaci WHCP, použijte prosím errata 41600.