Problemas conocidos del comprobador de controladores estáticos: Windows 10 versión 1809

En esta página se describen los problemas comunes que pueden surgir al usar la herramienta Comprobador de controladores estáticos (SDV) en el Kit de controladores de Windows (WDK). La información siguiente pertenece específicamente a la versión de la herramienta que se incluye con Actualización de octubre de 2018 de Windows 10 (versión 1809).

Consulte Problemas conocidos de WDK para problemas conocidos de SDV con el WDK oficial más reciente.

Errores de InterceptedBuild

Síntoma principal: EL SDV produce un error con FATAL ERROR: Unrecoverable error in InterceptedBuild stage.

Al examinar el archivo DVL, verá un AssessmentScore valor con ScoreName="[driverName].[architecture].SDV.NA.Reason" y ScoreUnit="Unrecoverable error in InterceptedBuild stage."

En el caso de los errores de InterceptedBuild, realice los pasos siguientes para diagnosticar el problema.

  1. Vuelva a ejecutar SDV desde la línea de comandos de Visual Studio 2017 Native Tools con la marca /debug. Para obtener más información sobre las opciones de comandos, consulte Comandos comprobadores de controladores estáticos.

    a. En primer lugar, ejecute la función de biblioteca de SDV en cualquier proyecto de biblioteca dependiente. Por ejemplo: msbuild /p:Configuration=Release /p:Platform=x64 /t:sdv /p:inputs="/lib /debug".

    b. A continuación, ejecute SDV en el propio proyecto de controlador. Por ejemplo: msbuild /p:Configuration=Release /p:Platform=x64 /t:sdv /p:inputs="/check /debug"

  2. Confirme que el error se produce de nuevo en la fase InterceptedBuild.

  3. Vaya a la sdv carpeta que se genera en la carpeta del controlador al ejecutar SDV.

  4. Abra smvcl.log y busque la frase "error interno del compilador".

    a. Si un mensaje de error que contiene un error interno del compilador y una frase similar al error irrecuperable C1001: se ha producido un error interno en el compilador. (archivo del compilador 'msc1.cpp', línea 1511) está presente, se trata de un problema conocido que requiere errata (id. de errata 40705). Si necesita más ayuda, envíe un correo electrónico a stlogohelp@microsoft.com.

    b. Si hay un mensaje de error que contiene un error interno del compilador pero no tiene un aspecto similar al anterior, es probable que requiera una errata, pero es posible que no sea un problema conocido existente. Envíe un correo electrónico a la dirección stlogohelp@microsoft.com.

    c. Si no ve ninguna línea que contenga el error interno del compilador, busque las líneas que comiencen por el error. Estos pueden o no ser problemas que requieren errata. Envíe un correo electrónico a la dirección stlogohelp@microsoft.com.

  5. Abra smvlink1.log y busque el error interno del compilador de frases.

    a. Si hay un mensaje de error que contiene un error interno del compilador y un error: error: en la fase 2: la memoria insuficiente está presente, se trata de un problema conocido que requiere errata.

    b. Si no ve ninguna línea que contenga el error interno del compilador, busque las líneas que comiencen por el error. Estos pueden o no ser problemas que requieren errata. Envíe un correo electrónico a la dirección stlogohelp@microsoft.com.

    c. Si no ve ninguno de los anteriores, póngase en contacto con MSFT para obtener soporte técnico.

Para ponerse en contacto con MSFT para obtener soporte técnico, asegúrese de que el código fuente no se comparte ejecutando lo siguiente:

  1. Ejecute SDV con la marca /debug habilitada y canalice la salida a un archivo de texto.

  2. Vaya a la sdv carpeta del directorio del controlador y ejecute los siguientes comandos para borrar los resultados de compilación que podrían exponer orígenes:

    del /s *.obj
    del /s *.rawcfg*
    del /s *.li
    del /s *.pdb
    del /s *.sys
    
  3. Envíe los siguientes archivos a stlogohelp@microsoft.com:

    a. El archivo de texto con la salida de la ejecución de SDV

    b. El archivo smexecute-NormalBuild.log

    c. El archivo smvexecute-InterceptedBuild.log

    d. Subcarpeta "sdv"

Los entornos de ejecución de Visual Studio C++ 2013 no están presentes

Síntoma principal: al ejecutar SDV en un sistema que no tiene los entornos de ejecución de Visual Studio C++ 2012 y 2013, es posible que el usuario vea errores en cuadros emergentes, como La ejecución del código no puede continuar porque no se encontró [MSVCR110.dll o VCOMP110.dll]. La reinstalación del programa puede solucionar este problema.

En este caso, la solución consiste en instalar tanto el x86 como el x64 Visual C++ Redistributable para Visual Studio 2012 y 2013.

Procedimiento recomendado: uso de Visual Studio 2017, versión 15.8

De forma predeterminada, el análisis de código no compila automáticamente el controlador en Visual Studio 15.7. Si el controlador depende de los archivos binarios que se generan, esto puede provocar un error en el panel Salida . En su lugar, se recomienda usar la versión 15.8 en su lugar.

Error de generación de DVL después de quitar la configuración de un proyecto

Síntoma principal: Después de quitar una configuración de un proyecto a través de la ventana de Configuration Manager, el usuario ve el siguiente mensaje al seleccionar Crear registro de comprobación del controlador:Please select a driver project. Driver Verification Log cannot be created for the selected platform tool set: 'v100'"

Solución:

  1. Realice una copia de seguridad del archivo del proyecto y, a continuación, abra el archivo del proyecto en un editor de texto.

  2. En la \<PropertyGroup Label="Globals"\> sección , busque dos etiquetas XML: una con el formato \<Configuration\>\[Configuration type\]\</Configuration\> y otra con el formato \<Platform Condition="'$(Platform)' == ''"\>\[Architecture\]\</Platform\>, donde \[Configuration type\] y \[Architecture\] son la configuración y versión predeterminadas para este tipo de proyecto.

  3. Actualice \[Configuration type\] y \[Architecture\] a los valores adecuados para el proyecto. Por ejemplo, si quitaste la plataforma Win32, podrías actualizar \[Architecture\] a x64 en su lugar.

Solución alternativa:

  1. Abra un símbolo del sistema de Visual Studio 2017 Native Tools.

  2. Vaya a la carpeta del controlador.

  3. Ejecute msbuild [Your Project] /p:Configuration=[Configuration type] /p:Platform=[Architecture] /t:dvl, donde \[Your Project\] es el archivo vcxproj, \[Configuration type\] es una configuración válida, como Release, y \[Architecture\] es una arquitectura válida como x64.

La generación de DVL no funciona en ServerCore, use la GUI del servidor.

Se produce un error en la prueba de logotipo de Static Tools cuando se ejecuta. La revisión de los registros de prueba muestra un error similar 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)

Asegúrese de que el paquete TAEF está implementado o RoMetadata.dll se implementa en una ubicación en la variable de entorno PATH.

El síntoma clave es el error al cargar RoMetadata.dll.

Si tiene una instalación de gui de servidor con la misma arquitectura y la misma versión de Windows que la instalación de ServerCore, copie el archivo RoMetadata.dll de la GUI del servidor a ServerCore. El archivo DLL se puede encontrar en la carpeta System32 (por ejemplo, C:\Windows\System32) y debe colocarse en la misma carpeta de la máquina ServerCore. Esto debería permitir que la prueba se ejecute en ServerCore. Si sigue experimentando problemas, consulte la siguiente solución alternativa.

La segunda solución consiste en ejecutarse en la GUI del servidor y, a continuación, combinar el paquete con el paquete que contiene los resultados de Server Core. Para obtener información sobre la combinación de paquetes, consulte Combinación de paquetes.

Se produce un error en el comprobador de controladores estáticos al salir de lib.exe/iwrap.exe con 0xc0000142 error

El archivo smvbuild.log contiene un mensaje similar a este error:

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 es un problema conocido. Si este problema bloquea la certificación WHCP, use errata 41600.