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 |
---|---|
La règle MarkDevicePower spécifie qu’un IRP_MJ_POWER avec IRP_MN_SET_POWER pour SystemPowerState IRP allant vers S0 est suspendu. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
La règle MarkQueryRelations spécifie que le pilote doit mettre en place la IRP_MN_QUERY_DEVICE_RELATIONS IRP. |
|
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. |
|
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. |
|
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. |
|
La règle PendedCompletedRequest3 spécifie qu’un IRP en attente ne doit pas être terminé avec un appel à IoCompleteRequest. |
|
La règle PendedCompletedRequestEx spécifie que le pilote ne doit pas appeler IoCompleteRequest pour un IRP en attente. |
|
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. |
|
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. |
|
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. |
|
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
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 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).