Partilhar via


Problemas conhecidos do verificador de driver estático - Windows 10 Versão 1809

Esta página descreve problemas comuns que você pode encontrar ao usar a ferramenta Static Driver Verifier (SDV) no Windows Driver Kit (WDK). As informações abaixo referem-se especificamente à versão da ferramenta fornecida com o Windows 10 October 2018 Update (Versão 1809).

Consulte Problemas conhecidos do WDK para problemas conhecidos de SDV com o WDK oficial mais recente.

Falhas de InterceptedBuild

Sintoma primário: SDV falha com FATAL ERROR: Unrecoverable error in InterceptedBuild stage.

Ao examinar o arquivo DVL, você verá um AssessmentScore valor com ScoreName="[driverName].[architecture].SDV.NA.Reason" e ScoreUnit="Unrecoverable error in InterceptedBuild stage."

Para falhas de InterceptedBuild, execute as seguintes etapas para diagnosticar o problema.

  1. Execute novamente o SDV a partir da linha de comando das ferramentas nativas do Visual Studio 2017 com o sinalizador /debug. Para obter detalhes sobre as opções de comando , consulte Comandos do Verificador de Driver Estático.

    a) Primeiro, execute a função de biblioteca do SDV em qualquer projeto de biblioteca dependente. Por exemplo: msbuild /p:Configuration=Release /p:Platform=x64 /t:sdv /p:inputs="/lib /debug".

    b. Em seguida, execute SDV no próprio projeto de driver. Por exemplo: msbuild /p:Configuration=Release /p:Platform=x64 /t:sdv /p:inputs="/check /debug"

  2. Confirme se a falha ocorre novamente no estágio InterceptedBuild.

  3. Navegue até a sdv pasta gerada na pasta do driver quando você executa o SDV.

  4. Abra smvcl.log e procure a frase "erro interno do compilador".

    a) Se uma mensagem de erro contendo erro interno do compilador e uma frase semelhante ao erro fatal C1001: Ocorreu um erro interno no compilador. (arquivo de compilador 'msc1.cpp', linha 1511) está presente, este é um problema conhecido que requer errata (errata ID 40705). Se precisar de mais assistência, envie um e-mail para stlogohelp@microsoft.com.

    b. Se uma mensagem de erro contendo erro interno do compilador estiver presente, mas não se parecer com a acima, isso provavelmente exigirá uma errata, mas pode não ser um problema conhecido existente. E-mail stlogohelp@microsoft.com.

    c. Se você não vir nenhuma linha contendo erro interno do compilador, procure por linhas que comecem com erro. Estes podem ou não ser problemas que exijam errata. E-mail stlogohelp@microsoft.com.

  5. Abra smvlink1.log e procure a frase erro interno do compilador.

    a) Se uma mensagem de erro contendo erro interno do compilador e slamcl: error: na fase 2: falta de memória estiver presente, este é um problema conhecido que requer errata.

    b. Se você não vir nenhuma linha contendo erro interno do compilador, procure por linhas que comecem com erro. Estes podem ou não ser problemas que exijam errata. E-mail stlogohelp@microsoft.com.

    c. Se você não vir nenhuma das opções acima, entre em contato com a MSFT para obter suporte.

Para entrar em contato com a MSFT para obter suporte, certifique-se de que o código-fonte não seja compartilhado executando o seguinte:

  1. Execute SDV com o sinalizador /debug ativado e canalize a saída para um arquivo de texto.

  2. Navegue até a sdv pasta no diretório do driver e execute os seguintes comandos para limpar os resultados da compilação que podem expor fontes:

    del /s *.obj
    del /s *.rawcfg*
    del /s *.li
    del /s *.pdb
    del /s *.sys
    
  3. Envie os seguintes ficheiros para stlogohelp@microsoft.com:

    a) O arquivo de texto com a saída do SDV em execução

    b. O arquivo smexecute-NormalBuild.log

    c. O arquivo smvexecute-InterceptedBuild.log

    d. A subpasta "sdv"

Tempos de execução do Visual Studio C++ 2013 não presentes

Sintoma primário: Ao executar SDV em um sistema que não tem os tempos de execução do Visual Studio C++ 2012 e 2013, o usuário pode ver erros em caixas pop-up, como A execução do código não pode continuar porque [MSVCR110.dll ou VCOMP110.dll] não foi encontrado. Reinstalar o programa pode corrigir esse problema.

Nesse caso, a solução é instalar o Visual C++ Redistributable x86 e x64 para Visual Studio 2012 e 2013.

Práticas recomendadas: usar o Visual Studio 2017 Versão 15.8

Por padrão, a análise de código não cria automaticamente o driver no Visual Studio 15.7. Se o driver depender de binários que estão a ser gerados, isso pode levar a uma falha no painel Saída. Em vez disso, recomendamos usar a versão 15.8.

Falha de geração de DVL após remover a configuração de um projeto

Sintoma primário: Depois de remover uma configuração de um projeto através da janela do Configuration Manager, o usuário vê a seguinte mensagem ao selecionar Criar log de verificação de driver: Please select a driver project. Driver Verification Log cannot be created for the selected platform tool set: 'v100'"

Solução:

  1. Faça backup do arquivo de projeto e, em seguida, abra o arquivo de projeto em um editor de texto.

  2. \<PropertyGroup Label="Globals"\> Na seção, encontre duas tags XML: uma com o formato \<Configuration\>\[Configuration type\]\</Configuration\> e outra com o formato\<Platform Condition="'$(Platform)' == ''"\>\[Architecture\]\</Platform\>, onde \[Configuration type\] e \[Architecture\] são a configuração e liberação padrão para esse tipo de projeto.

  3. Atualize \[Configuration type\] e \[Architecture\] para os valores apropriados para o seu projeto. Por exemplo, se você removeu a plataforma Win32, você pode atualizar \[Architecture\] para x64 em vez disso.

Solução alternativa:

  1. Abra um prompt de comando do Visual Studio 2017 Native Tools.

  2. Navegue até a pasta do driver.

  3. Execute msbuild [Your Project] /p:Configuration=[Configuration type] /p:Platform=[Architecture] /t:dvl, onde \[Your Project\] é o arquivo vcxproj, \[Configuration type\] é uma configuração válida, como Release, e \[Architecture\] é uma arquitetura válida, como x64.

A geração DVL não funciona no ServerCore, use a interface gráfica do servidor (Server GUI).

O teste "Static Tools Logo" falha quando é executado. A revisão dos logs de teste mostra uma falha semelhante a 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)

Verifique se o pacote TAEF está implantado ou RoMetadata.dll está implantado em um local em sua variável de ambiente PATH.

O sintoma chave é a falha ao carregar RoMetadata.dll.

Se você tiver uma instalação Server GUI com a mesma arquitetura e versão do Windows que sua instalação ServerCore, copie o arquivo RoMetadata.dll da GUI do Servidor para ServerCore. A DLL pode ser encontrada na pasta System32 (por exemplo, C:\Windows\System32) e deve ser colocada na mesma pasta na máquina ServerCore. Isso deve permitir que o teste seja executado no ServerCore. Se você ainda estiver enfrentando problemas, consulte a próxima solução alternativa.

A segunda solução é executar na GUI do servidor e, em seguida, mesclar o pacote com o pacote que contém os resultados do Server Core. Para obter informações sobre como mesclar pacotes, consulte Mesclar pacotes.

Static Driver Verifier falha ao sair de lib.exeouiwrap.exe com erro 0xc0000142

O ficheiro smvbuild.log contém uma mensagem semelhante a este erro:

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.

Este é um problema conhecido. Se este problema estiver a bloquear a sua certificação WHCP, utilize a errata 41600.