Partager via


Ensemble de règles IrpPending (WDM)

Utilisez ces règles pour vérifier que votre pilote pend correctement les paquets de demandes d’E/S (IRP).

Contenu de cette section

Rubrique Description

MarkDevicePower

La règle MarkDevicePower spécifie qu’un IRP_MJ_POWER avec IRP_MN_SET_POWER pour SystemPowerState IRP allant vers S0 est suspendu.

MarkingInterlockedQueuedIrps

La règle MarkingInterlockedQueuedIrps spécifie que le pilote marque correctement l’IRP comme étant en attente avant de le mettre en file d’attente de façon verrouillée pour un traitement ultérieur.

MarkingQueuedIrps

La règle MarkingQueuedIrps spécifie que le pilote appelle IoMarkIrpPending pour un IRP qui nécessite un traitement supplémentaire uniquement tout en maintenant un verrou de rotation. Cette règle s’applique uniquement lorsque le pilote ajoute l’IRP à une file d’attente gérée par le pilote.

MarkIrpPending

La règle MarkIrpPending spécifie que chaque fois qu’une routine de répartition de pilote appelle IoMarkIrpPending, le pilote retourne STATUS_PENDING à la fin de la routine de répartition. Consultez MarkIrpPending2 pour obtenir une spécification complémentaire.

MarkIrpPending2

La règle MarkIrpPending2 spécifie que si une routine de répartition retourne STATUS_PENDING, elle a appelé IoMarkIrpPending ou passé l’IRP au pilote inférieur. Consultez MarkIrpPending pour obtenir une spécification complémentaire.

MarkPower

La règle MarkPower spécifie qu’un IRP_MJ_POWER avec IRP_MN_SET_POWER pour SystemPowerState IRP allant vers S0 est suspendu. Cette règle s’applique uniquement aux pilotes FDO et FIDO.

MarkPowerDown

La règle MarkPowerDown spécifie qu’un IRP_MJ_POWER avec IRP_MN_SET_POWER pour SystemPowerState IRP passant de s0 à [S1... S5] est suspendu.

MarkQueryRelations

La règle MarkQueryRelations spécifie que le pilote doit mettre en place la IRP_MN_QUERY_DEVICE_RELATIONS IRP.

MarkStartDevice

La règle MarkStartDevice spécifie que le pilote pend correctement un IRP IRP_MN_START_DEVICE. Cette règle s’applique uniquement aux pilotes FDO et FIDO.

PendedCompletedRequest

La règle PendedCompletedRequest spécifie que la routine de répartition d’un pilote ne retourne pas STATUS_PENDING sur un IRP si le pilote a appelé IoCompleteRequest sur l’IRP entrante.

PendedCompletedRequest2

La règle PendedCompletedRequest2 spécifie qu’une attente est requise après un appel à IoCallDriver ou PoCallDriver , car la routine de répartition peut terminer un IRP en attente.

PendedCompletedRequest3

La règle PendedCompletedRequest3 spécifie qu’un IRP en attente ne doit pas être terminé avec un appel à IoCompleteRequest.

PendedCompletedRequestEx

La règle PendedCompletedRequestEx spécifie que le pilote ne doit pas appeler IoCompleteRequest pour un IRP en attente.

StartDeviceWait

La règle StartDeviceWait spécifie que le pilote ne doit pas appeler KeWaitForSingleObject dans le contexte de l’IRP du périphérique de démarrage.

StartDeviceWait2

La règle StartDeviceWait2 spécifie que le pilote ne doit pas appeler KeWaitForSingleObject dans le contexte de l’IRP de démarrage de l’appareil.

StartDeviceWait3

La règle StartDeviceWait3 spécifie que le pilote ne doit pas appeler KeWaitForSingleObject dans le contexte de l’IRP de démarrage de l’appareil.

StartDeviceWait4

La règle StartDeviceWait4 spécifie que le pilote ne doit pas appeler KeWaitForSingleObject dans le contexte de l’IRP de démarrage de l’appareil.

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

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

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

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