Partager via


Annulation des IRPs

Les pilotes dans lesquels les IRP peuvent rester en file d’attente pendant un intervalle indéfini (afin qu’un utilisateur puisse annuler une demande d’E/S précédemment envoyée) doivent avoir une ou plusieurs routines Cancel pour effectuer les demandes d’E/S annulées par l’utilisateur. Par exemple, les pilotes de périphériques clavier, souris, parallèles, série et audio (ou les pilotes superposés) et les pilotes de système de fichiers doivent avoir des routines d’annulation .

Les pilotes pour Microsoft Windows XP et les systèmes d’exploitation ultérieurs peuvent utiliser des files d’attente IRP cancel-safe plutôt que d’implémenter leurs propres routines Cancel .

« Annuler un IRP » signifie terminer l’IRP aussi rapidement que possible tout en conservant l’intégrité du système. Pour une présentation générale de l’achèvement des IRP, consultez Terminer les IRP.

Le processus d’annulation commence lorsque le système ou un pilote appelle IoCancelIrp. Cette routine est appelée pour chaque IRP associé au thread qui n’est pas encore entièrement terminé. Le système annule les runtimes d’intégration non traités si le thread qui a lancé la demande d’E/S se ferme. Les pilotes peuvent annuler uniquement les IRPs qu’ils ont créés (voir Création de runtimes d’intégration pour les pilotes Lower-Level.)

Si un IRP annulé n’est pas terminé dans les 5 minutes, le gestionnaire d’E/S considère que l’IRP a expiré. Ces irPs sont dissociés du thread et une erreur est enregistrée pour l’appareil qui possède actuellement l’IRP. Vous devez vous assurer que toutes les demandes qui peuvent prendre beaucoup de temps dans votre pilote sont annulables. Pour vous assurer que les requêtes potentiellement longues sont annulables, vous pouvez utiliser des files d’attente IRP cancel-safe ou l’infrastructure de pilote en mode noyau, qui exclut l’annulation du développeur du pilote.

Cette section fournit les rubriques suivantes :

Présentation de l’annulation de routines

Inscription d’une routine d’annulation

Synchronisation de l’annulation des IRP

Implémentation d’une routine d’annulation

Points à prendre en compte lors de l’annulation des IRPs