Partager via


Ensemble de règles de verrouillage (WDM)

Utilisez ces règles pour vérifier que votre pilote gère correctement les ressources partagées.

Contenu de cette section

Rubrique Description

CancelSpinLock

La règle CancelSpinLock spécifie que le pilote appelle IoAcquireCancelSpinLock avant d’appeler IoReleaseCancelSpinLock et que le pilote appelle IoReleaseCancelSpinLock avant tout appel ultérieur à IoAcquireCancelSpinLock.

CancelSpinlockRelease

La règle CancelSpinlockRelease spécifie que les appels à IoAcquireCancelSpinLock et IoReleaseCancelSpinLock sont utilisés en alternance stricte. Autrement dit, chaque appel à IoAcquireCancelSpinLock doit avoir un appel correspondant à IoReleaseCancelSpinLock.

CriticalRegions

La règle CriticalRegions spécifie que le pilote doit appeler KeEnterCriticalRegion avant d’appeler KeLeaveCriticalRegion et que le pilote appelle KeLeaveCriticalRegion avant tout appel ultérieur à KeEnterCriticalRegion. (Les appels imbriqués sont autorisés.)

ExclusiveResourceAccess

La règle ExclusiveResourceAccess spécifie que le pilote appelle ExAcquireResourceExclusiveLite avant d’appeler ExReleaseResourceLite ou ExReleaseResourceForThreadLite et spécifie que le pilote appelle ExReleaseResourceLite ou ExReleaseResourceForThreadLite avant tout appel ultérieur à ExAcquireResourceExclusiveLite.

GuardedRegions

La règle GuardedRegions vérifie que les appels à KeEnterGuardedRegion et KeLeaveGuardedRegion sont utilisés en alternance stricte.

QueuedSpinLock

La règle QueuedSpinLock spécifie que le pilote appelle KeAcquireInStackQueuedSpinLock avant d’appeler KeReleaseInStackQueuedSpinLock et que le pilote appelle KeReleaseInStackQueuedSpinLock avant tout appel ultérieur à KeAcquireInStackQueuedSpinLock.

QueuedSpinLockRelease

La règle QueuedSpinLockRelease spécifie que les appels à KeAcquireInStackQueuedSpinLock et KeReleaseInStackQueuedSpinLock sont utilisés en alternance stricte.

SpinLock

La règle SpinLock spécifie qu’après avoir appelé KeAcquireSpinLock, le pilote appelle KeReleaseSpinLock avant les appels suivants à KeAcquireSpinLock ou à KeAcquireSpinLockRaiseToDpc.

SpinLockDpc

La règle SpinLockDpc spécifie que les appels à KeAcquireSpinLock ou KeAcquireSpinLockRaiseToDpc et KeReleaseSpinLock doivent être effectués en alternance stricte. Autrement dit, après avoir appelé KeAcquireSpinLock ou KeAcquireSpinLockRaiseToDpc, le pilote doit appeler KeReleaseSpinLock avant les appels suivants à KeAcquireSpinLock ou à KeAcquireSpinLockRaiseToDpc.

SpinlockRelease

La règle SpinlockRelease spécifie que les appels à KeReleaseSpinLock sont effectués en alternance stricte avec KeAcquireSpinLock et KeAcquireSpinLockRaiseToDpc. Autrement dit, le pilote doit appeler KeReleaseSpinLock après avoir appelé KeAcquireSpinLock ou KeAcquireSpinLockRaiseToDpc et avant les appels suivants à KeAcquireSpinLock ou à KeAcquireSpinLockRaiseToDpc.

SpinLockSafe

La règle SpinLockSafe spécifie qu’IoStartNextPacket et IoCompleteRequest ne sont pas appelés en tenant un verrou de rotation.

WithinCriticalRegion

La règle WithinCriticalRegion spécifie que les appels du pilote à des fonctions de synchronisation particulières s’affichent uniquement après l’appel de KeEnterCriticalRegion et avant l’appel de KeLeaveCriticalRegion.

Les fonctions de synchronisation affectées sont les suivantes :

Pour sélectionner l’ensemble de règles de verrouillage

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

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

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