Partager via


Vérificateur de pilotes : Nouveautés

Driver Verifier est disponible dans toutes les versions de Windows à partir de Windows 2000. Chaque version introduit de nouvelles fonctionnalités et vérifie la recherche de bogues dans les pilotes Windows. Cette section récapitule les modifications et fournit des liens vers la documentation associée.

Vérificateur de pilotes dans Windows 11 (Mise à jour : 30 septembre 2021)

À compter de Windows 11, de nombreux indicateurs sont désormais activés sans redémarrage à l’aide d’une syntaxe de commande différente de celle de la syntaxe volatile. Pour plus d’informations sur la nouvelle syntaxe, consultez Syntaxe de commande du vérificateur de pilote.

Vérificateur de pilotes dans Windows 10 (Mise à jour : 8 mai 2018)

Important

Pour plus d’informations sur l’activation du vérificateur WDF sur Windows 10, version 1803 ou versions plus récentes, consultez Utilisation du vérificateur KMDF.

  • Vous pouvez toujours activer la vérification WDF dans le cadre des indicateurs du vérificateur de /standard pilotes. Pour plus d’informations, consultez Syntaxe de commande du vérificateur de pilote .
  • Cette modification aura un impact sur vous si vous activez DV avec la syntaxe /flags 0x209BB , car la vérification WDF ne sera plus automatiquement activée.

À compter de Windows 10, le vérificateur de pilotes inclut de nouvelles règles de validation de pilote pour les technologies suivantes :

Vérificateur de pilotes dans Windows 8-1 (Mise à jour : 17 juin 2013)

À compter de Windows 8.1, Driver Verifier introduit quatre nouvelles options pour la détection des erreurs.

Vérificateur de pilotes dans Windows 8 (Mise à jour : 20 octobre 2012)

À compter de Windows 8, Driver Verifier introduit cinq nouvelles options pour la détection des erreurs.

  • L’option Fuzzing du délai de Power Framework insère des retards d’exécution aléatoires pour aider à détecter les bogues de concurrence dans les pilotes qui utilisent l’infrastructure de gestion de l’alimentation (PoFx). Les retards d’exécution ont des limites de temps supérieur. Cette option n’est pas recommandée pour les pilotes qui n’utilisent pas directement l’infrastructure de gestion de l’alimentation (PoFx).
  • L’option de vérification de la conformité DDI applique les mêmes règles d’utilisation de l’interface de pilote de périphérique (DDI) que static driver verifier utilise pour vérifier que votre pilote effectue des appels de fonction à l’IRQL requis pour la fonction. La vérification de la conformité DDI est exécutée dans le cadre des options standard du vérificateur de pilotes.
  • L’option Invariant MDL Checking for Stack surveille la façon dont le pilote gère les mémoires tampons MDL invariantes sur la pile de pilotes.
  • L’option Invariant MDL Checking for Driver surveille la façon dont le pilote gère les mémoires tampons MDL invariantes sur une base par pilote.
  • L’option Stack Based Failure Injection injecte les échecs d’allocation de ressources dans les pilotes en mode noyau.

Lorsque vous générez, déployez et testez votre pilote à l’aide de Visual Studio 2012 et du WDK pour Windows 8, vous pouvez également configurer Driver Verifier pour qu’il s’exécute sur un ordinateur de test lorsque vous déployez votre pilote à des fins de test.

Vérificateur de pilotes dans Windows 7 (Mis à jour : 22 octobre 2012)

Pour Windows 7, Driver Verifier a été amélioré avec de nouveaux tests et fonctionnalités qui permettent au vérificateur de pilotes d’exposer davantage de classes de bogues de pilotes classiques.

  • Références incorrectes aux handles d’utilisateur à partir de pilotes de noyau
  • Améliorations apportées à la vérification des E/S
  • Améliorations de la simulation de pool, de suivi de pool et de faible niveau de ressources
  • Utilisation incorrecte des mécanismes de synchronisation
  • Références d’objets incorrectes
  • Frais de quota de pool à partir de la routine DPC
  • Blocages ou retards d’arrêt du système
  • Amélioration de la force des demandes d’E/S en attente

Dans Windows 7, Driver Verifier fournit des vérifications pour les verrous de rotation en file d’attente. Ces vérifications ressemblent à celles fournies pour les verrous de rotation dans les versions antérieures de Windows. Ces vérifications incluent les éléments suivants :

  • Vérifier qu’une opération qui doit augmenter la valeur IRQL (Interruption Request Level), telle que KeAcquireInStackQueuedSpinLock, ne réduit pas réellement la valeur IRQL.

  • Vérifier qu’une opération qui doit réduire la valeur IRQL, telle que KeReleaseInStackQueuedSpinLock, n’élève pas réellement la valeur IRQL.

  • Réduction de l’ensemble de travail du processus système si l’option Forcer la vérification IRQL est activée, lorsque l’IRQL est élevé à DISPATCH_LEVEL ou au-dessus, dans une tentative d’exposer des références possibles à la mémoire paginable pendant que le pilote s’exécute à l’IRQL avec élévation de privilèges.

  • Prédiction des interblocages possibles lorsque l’option Détection des blocages est activée.

  • Essayez d’utiliser la même structure de données KSPIN_LOCK à la fois comme verrou de rotation et comme verrou de rotation en file d’attente de pile lorsque l’option Détection de blocage est activée.

  • Recherche de valeurs de pointeur manifestement incorrectes, telles qu’une adresse virtuelle en mode utilisateur utilisée comme adresse de verrouillage de rotation.

  • Journalisation des transitions IRQL dans le journal IRQL du vérificateur de pilotes. Ces informations s’affichent lorsque vous utilisez l’extension !verifier 8 des débogueurs Windows. Consultez !verifier.

Informations de débogage supplémentaires

Dans Windows 7, Driver Verifier fournit les informations supplémentaires suivantes qui sont utiles pour le débogage :

Il existe un journal avec des traces de pile dans l’ordre chronologique pour les appels récents à KeEnterCriticalRegion et KeLeaveCriticalRegion provenant de pilotes vérifiés. Le contenu du journal s’affiche à l’aide de l’extension !verifier 0x200 débogueur des débogueurs Windows. Ces informations peuvent être utiles pour comprendre les scénarios dans lesquels un thread s’exécute de manière inattendue dans une région critique ou tente de quitter une région critique qu’il a déjà quittée.

Vous pouvez afficher des informations supplémentaires à partir du journal des demandes d’E/S en attente à l’aide de l’extension !verifier 0x40 débogueur. Dans les versions antérieures de Windows, le journal ne contenait qu’une seule trace de pile pour chaque IRP que Driver Verifier a forcé à être en attente. Il s’agissait de la trace de pile de l’époque où IoCompleteRequest a été appelé pour la première fois pour l’IRP en attente forcée. Windows 7 a au moins deux entrées de journal, peut-être plus de deux, pour chaque IRP en attente forcée :

  • Trace de pile au moment où Driver Verifier a choisi l’IRP pour être forcé en attente. Le vérificateur de pilotes choisit certains des irps à forcer en attente lorsque l’un des pilotes vérifiés appelle IoCallDriver.
  • Traces de pile pour chaque appel IoCompleteRequest pour l’IRP en attente forcée avant que l’achèvement n’atteigne le pilote vérifié. Plusieurs appels IoCompleteRequest peuvent exister pour le même IRP, car l’un des pilotes peut arrêter temporairement la fin de sa routine d’achèvement, puis la reprendre en appelant à nouveau IoCompleteRequest .

Il existe des traces de pile plus valides dans le journal de transition IRQL. Ce journal s’affiche à l’aide de !verifier 8. Dans les versions de Windows antérieures à Windows 7, Driver Verifier aurait pu essayer de journaliser certaines de ces traces de pile à l’IRQL élevé et n’a pas pu capturer la trace de pile en raison de la valeur IRQL élevée. Dans Windows 7, Driver Verifier tente de capturer ces traces de pile :

  • Avant de déclencher l’IRQL, par exemple, lorsqu’un pilote vérifié appelle KeAcquireSpinLock.
  • Une fois l’IRQL abaissé, lorsqu’un pilote vérifié appelle KeReleaseSpinLock.

De cette façon, Driver Verifier peut capturer davantage de ces traces de pile de transition IRQL.

!analyze peut trier les problèmes exposés par les vérifications améliorées du vérificateur d’E/S (qui font partie du vérificateur d’E/S dans Windows 7). Dans les versions antérieures de Windows, le rapport d’erreurs du vérificateur d’E/S amélioré consistait à afficher une description du défaut du pilote détecté par le vérificateur de pilotes, suivie d’un saut dans le débogueur. L’exécution de !analyze après un tel arrêt n’entraîne pas un tri significatif pour la plupart de ces interruptions, car !analyze ne peut pas utiliser les informations du texte de description d’erreur qui apparaît dans le débogueur. Dans Windows 7, les informations significatives sur ces défauts de pilote sont enregistrées par Driver Verifier en mémoire. !analyze peut trouver ces informations et effectuer un tri automatique beaucoup plus significatif pour la plupart de ces pauses.

Vérificateur de pilotes dans Windows Vista (Mis à jour : 9 février 2009)

Pour Windows Vista, Driver Verifier a été amélioré avec de nouveaux tests et fonctionnalités.

  • Activation du vérificateur de pilote et modification des paramètres sans redémarrage
  • Simulation de ressources faibles améliorées
  • Forcer les demandes d’E/S en attente
  • Vérifications de sécurité
  • Vérification plus approfondie des E/S
  • Vérification IRQL améliorée
  • Vérifications diverses
  • Suivi des pages mémoire verrouillée
  • Vérifications automatiques supplémentaires

Vérificateur de pilote dans Windows XP (mis à jour : 4 décembre 2001)

Driver Verifier est un outil permettant de surveiller les pilotes et pilotes graphiques en mode noyau Windows. Microsoft encourage vivement les fabricants de matériel à tester leurs pilotes avec Driver Verifier pour s’assurer que les pilotes n’effectuent pas d’appels de fonction illégaux ou ne provoquent pas d’altération du système. Driver Verifier a été amélioré avec de nouveaux tests et fonctionnalités pour Microsoft Windows XP.

Les pilotes soumis à WHQL à des fins de test doivent réussir driver verifier. Les nouvelles fonctionnalités du vérificateur de pilote dans Windows XP sont les suivantes :

  • Gestionnaire du vérificateur de pilotes, une toute nouvelle interface utilisateur graphique (GUI) pour verifier.exe
  • Nouvelle case activée automatique pour la surveillance du basculement de pile
  • Nouvelles options du vérificateur de pilote pour la vérification DMA (également appelée vérification HAL), la détection des interblocages et la vérification SCSI
  • Modifications de vérification d’E/S qui combinent des tests de « niveau 1 » et de « niveau 2 », tests facultatifs de vérification d’E/S améliorés
  • Nouvelles extensions du débogueur !deadlock et !dma
  • Nouvelles vérifications de bogues : 0xE6 (DRIVER_VERIFIER_DMA_VIOLATION) et 0xF1 (SCSI_VERIFIER_DETECTED_VIOLATION)
  • Sous-codes supplémentaires pour les codes de case activée de bogues existants 0xC4 et 0xC9

Les fonctionnalités du vérificateur de pilote incluent également :

  • Options de ligne de commande du nouveau vérificateur L’utilitaire verifier.exe a un nouveau paramètre, VolatileDriverList, qui peut être utilisé avec le mot clé /adddriver pour spécifier une liste de pilotes à ajouter aux paramètres volatiles. VolatileDriverList peut être utilisé avec le mot clé /removedriver pour spécifier une liste de pilotes à supprimer.

  • Nouvelles extensions !verifier Les nouvelles extensions !verifier affichent des informations de journal supplémentaires lors de la surveillance des faibles ressources ou des augmentations irQL et des verrous de rotation. Une aide en ligne est également disponible.

    • Les indicateurs définis avec 0x4 entraînent l’affichage d’inclure un journal des erreurs injectées par le vérificateur de pilote lors de la simulation de faibles ressources
    • Les indicateurs définis avec 0x8 entraînent l’affichage d’inclure un journal des dernières modifications IRQL apportées par les pilotes en cours de vérification
    • Si Indicateurs est égal exactement 0x4 ou 0x8, le paramètre Quantity spécifie le nombre d’enregistrements ou d’entrées de journal à inclure dans l’affichage
    • Le paramètre ? affiche un bref texte d’aide
  • L’aide en ligne du Gestionnaire du vérificateur de pilotes aide en ligne pour le Gestionnaire de vérificateur de pilotes peut être affichée de l’une des manières suivantes :

    • Sélectionnez et maintenez la touche enfoncée (ou cliquez avec le bouton droit) sur un élément dans la fenêtre Gestionnaire du vérificateur de pilotes, puis choisissez Qu’est-ce que c’est ? dans le menu contextuel.
    • Sélectionnez le point d’interrogation ( ?) dans le coin supérieur droit de la fenêtre, puis sélectionnez un élément dans la fenêtre Gestionnaire du vérificateur de pilotes.