Partager via


Problèmes connus du vérificateur de pilotes statiques - Windows 10 version 1809

Cette page décrit les problèmes courants que vous pouvez rencontrer lors de l’utilisation de l’outil SDV (Static Driver Verifier) dans le Kit de pilotes Windows (WDK). Les informations ci-dessous concernent spécifiquement la version de l’outil fournie avec Mise à jour d'octobre 2018 de Windows 10 (version 1809).

Consultez Problèmes connus WDK pour connaître les problèmes SDV connus avec le wdk officiel le plus récent.

Échecs InterceptedBuild

Symptôme principal : SDV échoue avec FATAL ERROR: Unrecoverable error in InterceptedBuild stage.

Lorsque vous examinez le fichier DVL, vous voyez une AssessmentScore valeur avec ScoreName="[driverName].[architecture].SDV.NA.Reason" et ScoreUnit="Unrecoverable error in InterceptedBuild stage."

Pour les échecs InterceptedBuild, effectuez les étapes suivantes pour diagnostiquer le problème.

  1. Réexécutez SDV à partir de la ligne de commande de Visual Studio 2017 Native Tools avec l’indicateur /debug. Pour plus d’informations sur les options de commande, consultez Commandes du vérificateur de pilotes statiques.

    a. Tout d’abord, exécutez la fonction de bibliothèque de SDV sur tous les projets de bibliothèque dépendants. Par exemple : msbuild /p:Configuration=Release /p:Platform=x64 /t:sdv /p:inputs="/lib /debug".

    b. Exécutez ensuite SDV sur le projet de pilote lui-même. Par exemple : msbuild /p:Configuration=Release /p:Platform=x64 /t:sdv /p:inputs="/check /debug"

  2. Vérifiez que l’échec se produit à nouveau dans la phase InterceptedBuild.

  3. Accédez au sdv dossier généré dans le dossier du pilote lorsque vous exécutez SDV.

  4. Ouvrez smvcl.log et recherchez l’expression « erreur interne du compilateur ».

    a. Si un message d’erreur contenant une erreur interne du compilateur et une expression similaire à l’erreur irrécupérable C1001 : Une erreur interne s’est produite dans le compilateur. (fichier du compilateur 'msc1.cpp', ligne 1511) est présent, il s’agit d’un problème connu qui nécessite errata (ID d’errata 40705). Si vous avez besoin d’aide supplémentaire, envoyez un e-mail à stlogohelp@microsoft.com.

    b. Si un message d’erreur contenant une erreur interne du compilateur est présent, mais ne ressemble pas à ce qui précède, cela nécessite probablement un errata, mais peut ne pas être un problème connu existant. Envoyez un e-mail à stlogohelp@microsoft.com.

    c. Si vous ne voyez aucune ligne contenant une erreur interne du compilateur, recherchez les lignes commençant par l’erreur. Il peut s’agir ou non de problèmes nécessitant errata. Envoyez un e-mail à stlogohelp@microsoft.com.

  5. Ouvrez smvlink1.log et recherchez l’expression erreur du compilateur interne.

    a. Si un message d’erreur contenant l’erreur interne du compilateur et l’erreur slamcl : erreur : à la phase 2 : mémoire insuffisante sont présents, il s’agit d’un problème connu qui nécessite errata.

    b. Si vous ne voyez aucune ligne contenant une erreur interne du compilateur, recherchez les lignes commençant par l’erreur. Il peut s’agir ou non de problèmes nécessitant errata. Envoyez un e-mail à stlogohelp@microsoft.com.

    c. Si vous ne voyez aucune des informations ci-dessus, contactez MSFT pour obtenir de l’aide.

Pour contacter MSFT pour obtenir du support, vérifiez que le code source n’est pas partagé en exécutant ce qui suit :

  1. Exécutez SDV avec l’indicateur /debug activé, puis dirigez la sortie vers un fichier texte.

  2. Accédez au sdv dossier dans le répertoire du pilote et exécutez les commandes suivantes pour effacer les résultats de build susceptibles d’exposer des sources :

    del /s *.obj
    del /s *.rawcfg*
    del /s *.li
    del /s *.pdb
    del /s *.sys
    
  3. Envoyez les fichiers suivants à stlogohelp@microsoft.com:

    a. Fichier texte avec la sortie de SDV en cours d’exécution

    b. Fichier smexecute-NormalBuild.log

    c. Fichier smvexecute-InterceptedBuild.log

    d. Sous-dossier « sdv »

Runtimes Visual Studio C++ 2013 non présents

Symptôme principal : lors de l’exécution de SDV sur un système qui n’a pas les runtimes Visual Studio C++ 2012 et 2013, l’utilisateur peut voir des erreurs dans des zones contextuelles telles que L’exécution du code ne peut pas continuer, car [MSVCR110.dll ou VCOMP110.dll] est introuvable. La réinstallation du programme peut résoudre ce problème.

Dans ce cas, la solution consiste à installer les versions x86 et x64 Redistributable Visual C++ pour Visual Studio 2012 et 2013.

Bonne pratique : utiliser Visual Studio 2017 version 15.8

Par défaut, l’analyse du code ne génère pas automatiquement le pilote dans Visual Studio 15.7. Si le pilote dépend de la génération de fichiers binaires, cela peut entraîner un échec dans le volet Sortie . Au lieu de cela, nous vous recommandons d’utiliser la version 15.8 à la place.

Échec de génération DVL après la suppression de la configuration d’un projet

Symptôme principal : après avoir supprimé une configuration d’un projet via la fenêtre Configuration Manager, l’utilisateur voit le message suivant lors de la sélection de Créer un journal de vérification du pilote :Please select a driver project. Driver Verification Log cannot be created for the selected platform tool set: 'v100'"

Solution de contournement :

  1. Sauvegardez votre fichier projet, puis ouvrez le fichier projet dans un éditeur de texte.

  2. Dans la \<PropertyGroup Label="Globals"\> section, recherchez deux balises XML : l’une avec le format \<Configuration\>\[Configuration type\]\</Configuration\> et l’autre avec le format \<Platform Condition="'$(Platform)' == ''"\>\[Architecture\]\</Platform\>, où \[Configuration type\] et \[Architecture\] sont la configuration et la mise en production par défaut pour ce type de projet.

  3. Mettez à jour \[Configuration type\] et \[Architecture\] vers les valeurs appropriées pour votre projet. Par exemple, si vous avez supprimé la plateforme Win32, vous pouvez effectuer une mise à jour \[Architecture\] vers x64 à la place.

Solution de contournement alternative :

  1. Ouvrez une invite de commandes Visual Studio 2017 Native Tools.

  2. Accédez au dossier du pilote.

  3. Exécutez msbuild [Your Project] /p:Configuration=[Configuration type] /p:Platform=[Architecture] /t:dvl, où \[Your Project\] est le fichier vcxproj, \[Configuration type\] est une configuration valide telle que Release et \[Architecture\] est une architecture valide telle que x64.

La génération DVL ne fonctionne pas sur ServerCore, utilisez l’interface graphique graphique du serveur

Le test du logo d’outils statiques échoue lors de l’exécution. L’examen des journaux de test montre un échec similaire à 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)

Vérifiez que le package TAEF est déployé ou que RoMetadata.dll est déployé à un emplacement dans votre variable d’environnement PATH.

Le symptôme clé est l’échec du chargement RoMetadata.dll.

Si vous disposez d’une installation d’interface graphique graphique de serveur avec la même architecture et la même version de Windows que votre installation ServerCore, copiez le fichier RoMetadata.dll de l’interface utilisateur graphique du serveur vers ServerCore. La DLL se trouve dans le dossier System32 (par exemple, C:\Windows\System32) et doit être placée dans le même dossier sur l’ordinateur ServerCore. Cela doit permettre au test de s’exécuter sur ServerCore. Si vous rencontrez toujours des problèmes, reportez-vous à la solution de contournement suivante.

La deuxième solution de contournement consiste à exécuter sur l’interface utilisateur graphique du serveur, puis à fusionner le package avec le package contenant les résultats de Server Core. Pour plus d’informations sur la fusion de packages, consultez Fusionner des packages.

Échec du vérificateur de pilote statique avec l'lib.exe/iwrap.exe avec 0xc0000142 erreur

Le fichier smvbuild.log contient un message similaire à cette erreur :

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.

Il s'agit d'un problème connu. Si ce problème bloque votre certification WHCP, utilisez errata 41600.