Partager via


Ensemble de règles d’avertissement (WDM)

Utilisez ces règles pour vérifier que votre pilote peut traiter correctement les IRP dans différents contextes et suivre les meilleures pratiques recommandées par Microsoft.

Contenu de cette section

Rubrique Description

CheckDeviceObjectFlags

La règle CheckDeviceObjectFlags spécifie qu’un pilote de bus doit case activée que les indicateurs d’objet d’appareil pour DO_POWER_PAGABLE et DO_POWER_INRUSH sont définis de manière cohérente pour le FDO et les PDO enfants. Cette règle s’applique uniquement aux pilotes de bus.

CompletionEventChecking

La règle CompletionEventChecking spécifie qu’un pilote n’appelle pas IoMarkIrpPending et KeSetEvent dans une routine d’achèvement pour le même IRP.

DeleteDevice

La règle DeleteDevice spécifie que les pilotes ne doivent pas s’appuyer sur le Gestionnaire d’E/S ou le Gestionnaire PnP pour maintenir l’objet DeviceObject actif après un appel à IoDeleteDevice.

MultRemoveLock

La règle MultRemoveLock vérifie que IoAcquireRemoveLock est appelé avec un seul verrou de suppression unique. Il s’agit d’une règle d’avertissement.

PagedCode

La règle PagedCode spécifie que le pilote appelle la macro PAGED_CODE uniquement lorsqu’elle s’exécute à IRQL <= APC_LEVEL.

PagedCodeAtPowerTrans

La règle PagedCodeAtPowerTrans spécifie qu’un pilote ne doit pas appeler PAGED_CODE lorsqu’il répond à un système IRP_MJ_POWER Irp (IRP_MN_SET_POWER) et à un appareil IRP_MJ_POWER Irp (IRP_MN_SET_POWER).

ReservedDDIS

La règle ReservedDDIs vérifie que les pilotes n’appellent aucune fonction réservée.

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

  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 Avertissement.

    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 Warning.sdv avec l’option /case activée. Par exemple :

    msbuild /t:sdv /p:Inputs="/check:Warning.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).