Jeu de règles IrpTracking (WDM)
Utilisez ces règles pour vérifier que votre pilote effectue correctement le suivi des paquets de demande d’E/S (IRP) afin que l’appareil ne soit pas supprimé pendant que les fournisseurs d’intégration sont en attente.
Contenu de cette section
Sujet | Description |
---|---|
La règle IoReleaseRemoveLockAndWaitOutsideRemoveDevice spécifie que IoReleaseRemoveLockAndWait ne doit pas être appelé en dehors de IRP_MJ_PNP avec IRP_MN_REMOVE_DEVICE pour un pilote PnP. |
|
La règle NsRemoveLockMnRemove vérifie qu’un pilote ne retourne pas STATUS_NOT_SUPPORTED lors du traitement de IRP_MJ_PNP avec minorFunction IRP_MN_REMOVE_DEVICE. Cette règle s’applique uniquement aux pilotes FDO et FIDO. |
|
La règle NsRemoveLockMnSurpriseRemoveRemove vérifie qu’un pilote ne retourne pas STATUS_NOT_SUPPORTED lors du traitement d’une requête IRP_MJ_PNP avec minorFunction IRP_MN_SUPRISE_REMOVAL. Cette règle s’applique uniquement aux pilotes FDO et FIDO. |
|
La règle NsRemoveLockQueryMnRemove vérifie qu’un pilote ne retourne pas STATUS_NOT_SUPPORTED lors du traitement de IRP_MJ_PNP avec minorFunction IRP_MN_QUERY_REMOVE. Cette règle s’applique uniquement aux pilotes FDO et FIDO. |
|
La règle RemoveLock spécifie que les appels à IoAcquireRemoveLock et IoReleaseRemoveLock sont utilisés correctement. De plus, à la fin de la routine IRP_MJ_PNP ou IRP_MJ_POWER, le pilote ne doit pas contenir le RemoveLock. |
|
La règle RemoveLockCheck vérifie que les appels à IoAcquireRemoveLock et IoReleaseRemoveLockAndWait sont utilisés correctement lors du traitement de IRP_MJ_PNP avec minorFunction IRP_MN_REMOVE_DEVICE. |
|
La règle RemoveLockForward vérifie que les appels à IoAcquireRemoveLock et IoReleaseRemoveLock sont utilisés correctement lors du transfert d’un IRP vers un autre appareil. |
|
La règle RemoveLockForward2 vérifie que les appels à IoAcquireRemoveLock et IoReleaseRemoveLock sont utilisés correctement lors du transfert de l’IRP vers un autre appareil. |
|
La règle RemoveLockForwardDeviceControl vérifie que les appels à IoAcquireRemoveLock et IoReleaseRemoveLock sont utilisés correctement lorsque le pilote utilise IoCallDriver pour transférer un IRP vers un autre appareil. |
|
La règle RemoveLockForwardDeviceControl2 vérifie que les appels à IoAcquireRemoveLock et IoReleaseRemoveLock sont utilisés correctement lorsque le pilote utilise IoCallDriver pour transférer un IRP vers un autre appareil. |
|
La règle RemoveLockForwardDeviceControlInternal vérifie que les appels à IoAcquireRemoveLock et IoReleaseRemoveLock sont utilisés correctement lors du transfert d’un IRP à l’aide d’IoCallDriver vers un autre appareil. |
|
La règle RemoveLockForwardDeviceControlInternal2 vérifie que les appels à IoAcquireRemoveLock et IoReleaseRemoveLock sont utilisés correctement lors du transfert d’un IRP à l’aide d’IoCallDriver vers un autre appareil. |
|
La règle RemoveLockForwardRead vérifie que les appels à IoAcquireRemoveLock et IoReleaseRemoveLock sont utilisés correctement. |
|
La règle RemoveLockForwardRead2 vérifie que les appels à IoAcquireRemoveLock et IoReleaseRemoveLock sont utilisés correctement lors du transfert d’un IRP à l’aide d’IoCallDriver vers un autre appareil. |
|
La règle RemoveLockForwardWrite vérifie que les appels à IoAcquireRemoveLock et IoReleaseRemoveLock sont utilisés correctement lors du transfert d’un IRP à l’aide d’IoCallDriver vers un autre appareil. |
|
La règle RemoveLockForwardWrite2 vérifie que les appels à IoAcquireRemoveLock et IoReleaseRemoveLock sont utilisés correctement lors du transfert d’un IRP à l’aide d’IoCallDriver vers un autre appareil. |
|
La règle RemoveLockMnRemove vérifie que les appels à IoAcquireRemoveLock et IoReleaseRemoveLockAndWait sont utilisés correctement lors du traitement des IRP_MJ_PNP avec MinorFunction IRP_MN_REMOVE_DEVICE. |
|
La règle RemoveLockMnRemove2 vérifie que les appels à IoAcquireRemoveLock et IoReleaseRemoveLockAndWait sont utilisés correctement lors du traitement de IRP_MN_REMOVE_DEVICE demande avant que l’IRP soit transféré aux pilotes inférieurs. |
|
La règle RemoveLockMnSurpriseRemove vérifie que les appels à IoAcquireRemoveLock et IoReleaseRemoveLockAndWait sont utilisés correctement lors du traitement des IRP_MJ_PNP avec MinorFunction IRP_MN_SUPRISE_REMOVAL. Le pilote doit acquérir le verrou de suppression avant de transférer l’IRP vers le bas de la pile. |
|
La règle RemoveLockQueryMnRemove vérifie que les appels à IoAcquireRemoveLock et IoReleaseRemoveLock sont utilisés correctement lors du traitement de IRP_MJ_PNP avec MinorFunction IRP_MN_QUERY_REMOVE_DEVICE. Le pilote doit acquérir le verrou de suppression avant de transférer l’IRP vers le bas de la pile. |
|
La règle RemoveLockRelease2 vérifie que les appels à IoAcquireRemoveLock et IoReleaseRemoveLock sont utilisés dans une alternation stricte. De plus, à la fin de la routine de répartition, le pilote ne doit pas contenir le verrou de suppression. |
|
La règle RemoveLockReleaseCleanup spécifie que les appels à IoAcquireRemoveLock et IoReleaseRemoveLock sont utilisés dans une alternation stricte. Chaque appel à IoAcquireRemoveLock doit avoir un appel correspondant à IoReleaseRemoveLock. De plus, à la fin de la routine de répartition, le pilote ne doit pas contenir le verrou de suppression. |
|
La règle RemoveLockReleaseClose vérifie que les appels à IoAcquireRemoveLock et IoReleaseRemoveLock sont utilisés dans une alternation stricte. De plus, à la fin de la routine de répartition, le pilote ne doit pas contenir le verrou de suppression. |
|
La règle RemoveLockReleaseCreate vérifie que les appels à IoAcquireRemoveLock et IoReleaseRemoveLock sont utilisés dans une alternation stricte. De plus, à la fin de la routine de répartition, le pilote ne doit pas contenir le verrou de suppression. |
|
La règle RemoveLockReleaseDeviceControl vérifie que les appels à IoAcquireRemoveLock et IoReleaseRemoveLock sont utilisés dans une alternation stricte. De plus, à la fin de la routine de répartition, le pilote ne doit pas contenir le verrou de suppression. |
|
La règle RemoveLockReleaseInternalDeviceControl vérifie que les appels à IoAcquireRemoveLock et IoReleaseRemoveLock sont utilisés dans une alternation stricte. De plus, à la fin de la routine de répartition, le pilote ne doit pas contenir le verrou de suppression. |
|
La règle RemoveLockReleasePnp vérifie que les appels à IoAcquireRemoveLock et IoReleaseRemoveLock sont utilisés dans une alternation stricte. De plus, à la fin de la routine de répartition, le pilote ne doit pas contenir le verrou de suppression. |
|
La règle RemoveLockReleasePower vérifie que les appels à IoAcquireRemoveLock et IoReleaseRemoveLock sont utilisés dans une alternation stricte. De plus, à la fin de la routine de répartition, le pilote ne doit pas contenir le verrou de suppression. |
|
La règle RemoveLockReleaseRead vérifie que les appels à IoAcquireRemoveLock et IoReleaseRemoveLock sont utilisés dans une alternation stricte. De plus, à la fin de la routine de répartition, le pilote ne doit pas contenir le verrou de suppression. |
|
La règle RemoveLockReleaseShutdown vérifie que les appels à IoAcquireRemoveLock et IoReleaseRemoveLock sont utilisés dans une alternation stricte. De plus, à la fin de la routine de répartition, le pilote ne doit pas contenir le verrou de suppression. |
|
La règle RemoveLockReleaseSystemControl vérifie que les appels à IoAcquireRemoveLock et IoReleaseRemoveLock sont utilisés dans une alternation stricte. De plus, à la fin de la routine de répartition, le pilote ne doit pas contenir le verrou de suppression. |
|
La règle RemoveLockReleaseWrite vérifie que les appels à IoAcquireRemoveLock et IoReleaseRemoveLock sont utilisés dans une alternation stricte. De plus, à la fin de la routine de répartition, le pilote ne doit pas contenir le verrou de suppression. |
Pour sélectionner l’ensemble de règles IrpTracking
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 IrpTracking.
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 IrpTracking.sdv avec l’option /case activée. Par exemple :
msbuild /t:sdv /p:Inputs="/check:IrpTracking.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 les commandes MSBuild (Static Driver Verifier).