Partager via


Test du logo Static Tools

Ce test effectue une analyse statique conçue pour améliorer la fiabilité et la sécurité des pilotes. Les pilotes en mode noyau doivent passer le test du logo des outils statiques pour obtenir la certification. CodeQL doit être utilisé pour l'analyse statique d'un pilote en mode noyau en vue de sa soumission à Microsoft pour signature ou certification afin de se conformer au programme de compatibilité matérielle de Windows.

Détails du test

   
Spécifications
  • Device.DevFund.StaticTools.StaticAnalysisForDrivers
Plateformes
  • Client Windows 11 (x64)
  • Client Windows 11 (ARM64)
  • Windows Server
Versions prises en charge
  • Client Windows 11 (x64)
  • Client Windows 11 (ARM64)
  • Windows Server
Durée d’exécution prévue (en minutes) 5
Catégorie Développement
Délai d’expiration (en minutes) 0
Nécessite un redémarrage false
Nécessite une configuration spéciale false
Type automatique

Certification de l'analyse statique pour le client Windows

CodeQL est une technologie puissante d'analyse statique destinée à sécuriser les logiciels. La combinaison d'une suite étendue de requêtes de sécurité de grande valeur et d'une plateforme robuste en fait un outil inestimable pour sécuriser le code des pilotes tiers.

Afin d'améliorer la sécurité de l'écosystème Windows, Microsoft a ajouté cette exigence au programme de compatibilité matérielle de Windows, qui stipule que tous les pilotes soumis doivent utiliser le moteur CodeQL sur le code source du pilote et corriger toutes les requêtes considérées comme à corriger impérativement.

Cette exigence est mise en œuvre par le test du logo des outils statiques.

Veuillez consulter CodeQL et le test du logo des outils statiques pour plus de détails sur la manière de télécharger et d'exécuter CodeQL sur le code source de votre pilote. En suivant cette page et la section « CodeQL et génération de DVL » ci-dessous, vous vous assurez que le test du logo des outils statiques consomme correctement les résultats de l'exécution de CodeQL sur le code source du pilote dans le cadre du test du logo des outils statiques.

Quels types de pilotes le test du CodeQL et le test du logo Static Tools appliquent-ils ?

À l’heure actuelle, le test du logo Static Tools nécessite l’exécution de CodeQL et l’ensemble de requêtes « À corriger impérativement » transmis pour tous les pilotes en mode noyau, à l’exclusion des pilotes graphiques. Notez que l’exécution de CodeQL sur les pilotes graphiques est vivement recommandée même si elle n’est pas requise actuellement. Certaines requêtes peuvent également trouver des défauts utiles dans les composants en mode utilisateur.

Nous prévoyons d’étendre le test et ses requêtes pour exiger des résultats pour les pilotes graphiques, les pilotes en mode utilisateur et les composants de pilotes, ainsi que d’autres composants de package de pilotes à l’avenir. Si vous constatez un comportement inattendu ou des faux positifs exécutant CodeQL sur des pilotes graphiques ou des pilotes en mode utilisateur, signalez le problème sur le référentiel Windows-Driver-Developer-Supplemental-Tools.

Si vous exécutez le test sur un pilote graphique, le test est renseigné dans le HLK, mais passe par défaut. Si vous exécutez uniquement des composants en mode utilisateur ou si vous soumettez un package de pilotes sans code (c’est-à-dire une extension inf), le test risque de n'être pas renseigné. Si vous envoyez un composant en mode noyau et que, de manière inattendue, le test n’est pas renseigné, vérifiez que votre pilote est signé (voir la remarque ci-dessous).

Nouveautés en matière d'analyse statique pour la certification Windows Server

En ce qui concerne la certification Windows Server 2025, CodeQL deviendra l'outil requis pour le test du logo des outils statiques, ce qui implique que toutes les soumissions de pilotes doivent au minimum passer toutes les règles « à corriger impérativement » pour être acceptables pour le WHCP. Cependant, si vous certifiez pour Windows Server 2022 et les versions antérieures, CA, SDV et CodeQL peuvent être utilisés. Utilisez les versions du WDK avec les versions correspondantes du système d'exploitation.

Pour plus d'informations sur le téléchargement des différentes versions du WDK, consultez la section Télécharger le kit de pilotes Windows (WDK). Rejoignez le programme Windows Insider pour télécharger les versions WDK Insider Previews (https://aka.ms/wipwdk).

Génération de CodeQL et du journal de vérification des pilotes (DVL)

Microsoft impose l'exécution des requêtes CodeQL avec le test du logo des outils statiques. Le test du logo des outils statiques utilise un journal de vérification du pilote (DVL) pour rassembler les résultats de différentes analyses statiques exécutées sur le code source du pilote. Ce DVL est ensuite analysé dans le cadre du test du logo des outils statiques via un test HLK.

Les résultats CodeQL suivront le même modèle d'utilisation d'un DVL pour montrer que le pilote certifié a exécuté les requêtes CodeQL appropriées afin de réussir le test HLK pour la certification.

Placez le fichier .sarif dans le même répertoire que le fichier .vcxproj pour lequel un DVL est généré. Le nom exact n'a pas d'importance tant que le fichier se termine par « .sarif ».

Documentation supplémentaire

Les tests dans ce domaine de fonctionnalités peuvent contenir une documentation supplémentaire, notamment des informations sur les conditions préalables, la configuration et la résolution des problèmes que vous trouverez dans la ou les rubriques suivantes :

Exécution du test

Avant d'exécuter le test, vous devez créer un journal de vérification du pilote (DVL) en effectuant les étapes suivantes.

  1. Exécutez CodeQL, le Static Driver Verifier et l'outil d'analyse du code, selon les besoins, sur le code source du pilote.

  2. Exécutez l'utilitaire qui génère le fichier DVL. Pour en savoir plus sur la création d'un journal de vérification du pilote à joindre à votre demande, consultez la section Création d'un journal de vérification du pilote.

  3. Copiez le fichier DVL de l'ordinateur utilisé pour créer le fichier DVL vers l'ordinateur de test utilisé lorsque vous exécutez le test du logo des outils statiques. Copiez le fichier dans le répertoire %systemdrive%\DVL de l'ordinateur de test. Veillez à supprimer le contenu du répertoire de l'ordinateur de test avant de copier le nouveau journal de vérification du pilote.

  4. Exécutez le test du logo Static Tools. Si le test n’est pas renseigné dans le HLK, vérifiez que votre pilote est signé (voir ci-dessous). Sinon, si vous n’envoyez pas de fichier .sys dans le cadre de votre package, il faut s'attendre à ce que le test ne soit pas renseigné.

Remarque

L’objectif du test de logo Static Tools est de vous demander, en tant que développeur de pilotes, d’exécuter CodeQL sur votre pilote, avant soumission, pour contribuer à éliminer les bogues. Toutefois, nous avons reçu par le passé des rapports du test demandant par erreur des résultats CodeQL pour d’autres pilotes sur la pile en raison d’une limitation architecturale, bloquant la certification.

Pour résoudre ce problème dans Windows 24H2, nous avons évolué vers un modèle où la signature du pilote de l’appareil testé est vérifiée. Grâce à cette modification, les pilotes natifs Windows ne seront pas signalés par le test. En outre, pour débloquer la situation des développeurs qui effectuent des tests HLK sur les appareils d’un autre tiers, le test évite également de signaler les résultats pour les pilotes signés WHCP.

Lors de l’exécution de ce test dans le cadre de la certification, votre pilote doit être signé pour garantir que les fonctions de test sont correctement exécutées. Dans le cas contraire, le test peut ne pas être en mesure de signaler les violations CodeQL ou d'effectuer son énumération.

Remarque

Le test du logo des outils statiques ne nécessite que le fichier DVL pour montrer que le code QL a été exécuté. Le test ne requiert pas la réussite de toutes les règles. En outre, ce travail doit être exécuté sur le serveur avec le bureau. Si le test HLK échoue en utilisant Server Core (avec le message d'erreur : « RoMetadata.dll could not be found »), la solution consiste à l'exécuter sur Server with Desktop, puis à fusionner le package avec le package contenant les résultats de Server Core. Vous trouverez ici des informations sur la manière de fusionner les paquets : /windows-hardware/test/hlk/user/merge-packages.

Dépannage

Pour une résolution des problèmes génériques d’échecs de tests HLK, consultez Résolution des problèmes d’échecs de test Windows HLK.

Plus d’informations

Syntaxe de la commande

Option de commande Description

TE.exe /inproc /enablewttlogging /appendwttlogging Devfund_DvlTest.dll /p:WDKClass=[WDKClass] /p:DeviceClass=[DeviceClass] /p:QueryDriverNames=[QueryDriverNames]

Exécute le test.

Remarque

Pour obtenir une aide en ligne de commande pour ce test binaire, tapez /?.

Liste de fichiers

File Emplacement

Devfund_DvlTest.dll

<testbinroot>\OSBinRoot

Microsoft.StaticToolsLogo.ObjectModel.dll

<testbinroot>\OSBinRoot

TE.exe

<testbinroot>\OSBinRoot

Paramètres

Nom du paramètre Description des paramètres
WDKClass Classe d’appareil
DeviceClass Paramètre de classe d'appareil
QueryDriverNames Noms de pilotes attendus.