Partager via


Jeu de règles d’utilisation DDI (WDM)

Utilisez ces règles pour vérifier que votre pilote utilise correctement les DDIS WDM.

Contenu de cette section

Rubrique Description

DebugBreakUsage

La règle DebugBreakUsage spécifie que le pilote ne doit pas appeler DbgBreakPoint ou DbgBreakPointWithStatus. Cette règle s’applique uniquement lorsque vous créez une version non débogue du pilote.

DoubleFetch

La règle DoubleFetch vérifie la double extraction à partir des pointeurs de mémoire en mode utilisateur. Les accès en mode noyau double de la mémoire en mode utilisateur peuvent entraîner un problème de sécurité de condition de concurrence. Lors de l’accès aux données en mode utilisateur, le code en mode noyau doit effectuer une copie des données en mode utilisateur localement et éviter d’accéder aux données en mode utilisateur plusieurs fois. Si vous ne le faites pas, vous obtenez un type de problème appelé « double extraction », où les données peuvent changer après leur premier accès.

NullCheck

La règle NullCheck vérifie qu’une valeur NULL à l’intérieur du code du pilote n’est pas déréférée ultérieurement dans le pilote. Cette règle signale un défaut si l’une de ces conditions est vraie :

  • Il existe une attribution null qui est déréférencée ultérieurement.
  • Il existe un paramètre/global dans une procédure dans un pilote qui peut avoir la valeur NULL qui sera déréférencée ultérieurement, et il existe une case activée explicite dans le pilote qui suggère que la valeur initiale du pointeur peut être NULL.

Avec les violations de règle NullCheck, les instructions de code les plus pertinentes sont mises en surbrillance dans le volet d’arborescence des traces. Pour plus d’informations sur l’utilisation de la sortie de rapport, consultez Rapport du vérificateur de pilote statique et Présentation de la visionneuse de traces.

SafeStrings

La règle SafeStrings spécifie que le pilote appelle uniquement les fonctions de manipulation de chaîne qui protègent le système contre les intrusions involontaires ou malveillantes. Ces fonctions de chaîne sécurisée pour les pilotes sont définies dans Ntstrsafe.h.

ObsolèteDDIs

La règle ObsoleteDDIs spécifie que les pilotes ne doivent pas appeler FsRtlPrivateLock. Cette fonction est obsolète. Utilisez plutôt FsRtlFastLock .

Pour sélectionner l’ensemble de règles d’utilisation DDI

  1. Sélectionnez votre projet de pilote (.vcxProj) dans Microsoft Visual Studio. Dans le menu Pilote , cliquez sur Lancer le vérificateur de pilote statique....

  2. Cliquez sur l’onglet Règles . Sous Ensembles de règles, sélectionnez DDIUsage.

    Pour sélectionner l’ensemble de règles par défaut dans une fenêtre d’invite de commandes du développeur Visual Studio, spécifiez DDIUsage.sdv avec l’option /case activée. Par exemple :

    msbuild /t:sdv /p:Inputs="/check:DDIUsage.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
    

    Pour plus d’informations, consultez Utilisation du vérificateur de pilote statique pour rechercher des défauts dans les pilotes et commandes msBuild (Static Driver Verifier).