Partilhar via


Problemas conhecidos do verificador de driver estático – Windows 10 versão 1809

Esta página descreve os problemas comuns que você pode encontrar ao usar a ferramenta SDV (Verificador de Driver Estático) no WDK (Kit de Driver do Windows). As informações abaixo pertencem especificamente à versão da ferramenta fornecida com Atualização de outubro de 2018 para o Windows 10 (versão 1809).

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

Falhas do InterceptedBuild

Sintoma principal: o 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 do InterceptedBuild, execute as etapas a seguir para diagnosticar o problema.

  1. Execute novamente o SDV na linha de comando 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 o 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 driver quando você executar o SDV.

  4. Abra smvcl.log e pesquise 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 do compilador 'msc1.cpp', linha 1511) está presente, esse é um problema conhecido que requer errata (ID errata 40705). Se você precisar de mais assistência, envie um email stlogohelp@microsoft.compara .

    b. Se uma mensagem de erro que contém o 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. Envie um email para stlogohelp@microsoft.com.

    c. Se você não vir nenhuma linha que contenha erro interno do compilador, pesquise as linhas que começam com erro. Eles podem ou não ser problemas que exigem errata. Envie um email para stlogohelp@microsoft.com.

  5. Abra smvlink1.log e pesquise o erro interno do compilador de frase.

    a. Se uma mensagem de erro que contém o erro interno do compilador e um erro: erro: na fase 2: falta de memória está presente, esse é um problema conhecido que requer errata.

    b. Se você não vir nenhuma linha que contenha erro interno do compilador, pesquise as linhas que começam com erro. Eles podem ou não ser problemas que exigem errata. Envie um email para 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 o MSFT para obter suporte, verifique se o código-fonte não é compartilhado executando o seguinte:

  1. Execute o SDV com o sinalizador /debug habilitado e redirecione 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 de build que podem expor fontes:

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

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

    b. O arquivo smexecute-NormalBuild.log

    c. O arquivo smvexecute-InterceptedBuild.log

    d. A subpasta "sdv"

Runtimes do Visual Studio C++ 2013 não estão presentes

Sintoma principal: ao executar o SDV em um sistema que não tem os runtimes 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. A reinstalação do programa pode corrigir esse problema.

Nesse caso, a solução é instalar os x86 e x64 Pacotes Redistribuíveis do Visual C++ para Visual Studio 2012 e 2013.

Prática recomendada: 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 sendo gerados, isso poderá levar a uma falha no painel Saída . Em vez disso, recomendamos usar a versão 15.8.

Falha na geração de DVL após a remoção da configuração de um projeto

Sintoma principal: depois de remover uma configuração de um projeto por meio da janela Configuration Manager, o usuário verá 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 alternativa:

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

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

  3. Atualize \[Configuration type\] e \[Architecture\] para valores apropriados para seu projeto. Por exemplo, se você removeu a plataforma Win32, poderá atualizar \[Architecture\] para x64.

Solução alternativa:

  1. Abra um Prompt de Comando de Ferramentas Nativas do Visual Studio 2017.

  2. Navegue até a pasta do driver.

  3. Execute msbuild [Your Project] /p:Configuration=[Configuration type] /p:Platform=[Architecture] /t:dvl, em que \[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 de DVL não funciona no ServerCore, usa a GUI do Servidor

O teste do Logotipo das Ferramentas Estáticas 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 se RoMetadata.dll está implantado em um local em sua variável de ambiente PATH.

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

Se você tiver uma instalação de GUI do servidor com a mesma arquitetura e versão do Windows que a instalação do ServerCore, copie o arquivo RoMetadata.dll da GUI do Servidor para o ServerCore. A DLL pode ser encontrada na pasta System32 (por exemplo, C:\Windows\System32) e deve ser colocada na mesma pasta no computador 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 alternativa é 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.

O Verificador de Driver Estático falha ao sair do lib.exe/iwrap.exe com 0xc0000142 erro

O arquivo 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 esse problema estiver bloqueando sua certificação WHCP, use errata 41600.