Ensemble de règles de verrouillage (KMDF)
Utilisez ces règles pour vérifier que votre pilote gère correctement les ressources partagées.
Contenu de cette section
Rubrique | Description |
---|---|
La règle ParentObjectCheckLock spécifie que le pilote doit appeler WdfWaitLockCreate et WdfSpinLockCreate définissant un objet parent. |
|
La règle ReqSendWhileSpinlock spécifie qu’aucune demande n’est envoyée pendant que le pilote contient un verrouillage tournant. |
|
La règle Spinlock spécifie que les appels à KeAcquireSpinLock ou KeAcquireSpinLockRaiseToDpc et KeReleaseSpinlock sont utilisés en alternance stricte. |
|
La règle SpinlockDpc spécifie que les appels à KeAcquireSpinLock ou KeAcquireSpinLockRaiseToDpc et KeReleaseSpinlock sont utilisés en alternance stricte. |
|
La règle SpinlockRelease spécifie que les appels à KeAcquireSpinLock, KeAcquireSpinLockRaiseToDpc et KeReleaseSpinLock sont utilisés de manière équilibrée dans un rappel KMDF. À la fin d’une routine de rappel KMDF, le pilote ne doit pas tenir le verrou de rotation. |
|
La règle WdfInterruptLock spécifie que les appels à la méthode WdfInterruptAcquireLock sont utilisés en alternance stricte avec les appels à WdfInterruptReleaseLock. En outre, à la fin d’une routine de rappel KMDF, le pilote ne doit pas contenir l’objet de verrouillage de rotation de l’infrastructure, obtenu par un appel précédent à WdfInterruptAcquireLock. |
|
La règle WdfInterruptLockRelease spécifie que les appels à WdfInterruptAcquireLock et WdfInterruptReleaseLock sont utilisés de manière équilibrée dans une routine de rappel KMDF. À la fin d’une routine de rappel KMDF, le pilote ne doit pas contenir l’objet de verrouillage de rotation de l’infrastructure obtenu par un appel précédent à WdfInterruptAcquireLock. |
|
La règle WdfSpinlock spécifie que les appels à la méthode WdfSpinLockAcquire sont utilisés en alternance stricte avec WdfSpinlockRelease. À la fin d’une routine de rappel KMDF, le pilote ne doit pas contenir l’objet de verrouillage tournant du framework obtenu par un appel précédent à WdfSpinLockAcquire. |
|
La règle WdfSpinlockRelease spécifie que les appels à WdfSpinLockAcquire et WdfSpinlockRelease sont utilisés de manière équilibrée dans une fonction de rappel d’événement KMDF. Lorsque la fonction de rappel d’événement KMDF est retournée, le pilote ne doit pas contenir l’objet de verrouillage de rotation de l’infrastructure obtenu par un appel précédent à WdfSpinLockAcquire. |
|
La règle WdfWaitlock spécifie que les appels à WdfWaitLockAcquire sont utilisés en alternance stricte avec WdfWaitlockRelease. Lorsque la fonction de rappel d’événement KMDF est retournée, le pilote ne doit pas contenir l’objet de verrouillage de rotation de l’infrastructure obtenu par un appel précédent à WdfWaitLockAcquire. |
|
La règle WdfWaitlockRelease spécifie que les appels à WdfWaitLockAcquire et WdfWaitLockRelease sont utilisés de manière équilibrée dans une fonction de rappel d’événement KMDF. Lorsque la fonction de rappel d’événement KMDF est retournée, le pilote ne doit pas contenir l’objet de verrouillage de rotation de l’infrastructure obtenu par un appel précédent à WdfWaitLockAcquire. |
Pour sélectionner l’ensemble de règles de verrouillage
Sélectionnez votre projet de pilote (.vcxProj) dans Microsoft Visual Studio. Dans le menu Pilote , cliquez sur Lancer le vérificateur de pilote statique....
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 à partir d’une fenêtre d’invite de commandes 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).