Partager via


Quand effectuer une IRP

Un pilote doit lancer l’achèvement de l’IRP lorsque l’une des conditions suivantes est remplie :

  • Le pilote détermine que le traitement IRP ne peut pas progresser en raison de paramètres non valides ou d’autres conditions.

  • Le pilote est en mesure de gérer l’opération d’E/S demandée sans passer l’IRP dans la pile des pilotes, et l’opération est terminée.

  • L’IRP est en cours d’annulation. (Voir Annulation des IRPs.)

Si ces conditions ne sont pas remplies, la routine de répartition d’un conducteur doit transmettre l’IRP au pilote inférieur suivant, ou elle doit gérer le traitement de la demande d’E/S. Si l’une des conditions est remplie, le pilote doit appeler IoCompleteRequest.

Si un pilote termine une demande parce que le traitement ne peut pas progresser, ou s’il termine une requête en gérant l’opération demandée sans accéder réellement à l’appareil, il appelle généralement IoCompleteRequest à partir de l’une de ses routines de répartition. Pour plus d’informations, consultez Achèvement des IIP dans les routines de répartition.

Si un pilote doit accéder à un appareil pour répondre à la demande, il appelle généralement IoCompleteRequest à partir d’une routine DpcForIsr . Ces routines sont abordées en détail dans Interruptions de maintenance.