Propriété de la demande

Lorsque le gestionnaire d’E/S envoie une demande d’E/S à un pilote basé sur l’infrastructure, l’infrastructure intercepte la demande et crée un objet de requête d’infrastructure. L’infrastructure « possède » l’objet de requête, car seule l’infrastructure peut accéder à la requête et effectuer des opérations sur l’objet.

Une fois que l’infrastructure a créé un objet de requête, elle place l’objet dans l’une des files d’attente d’E/S du pilote. L’infrastructure continue de posséder l’objet de requête jusqu’à ce qu’elle supprime la requête de la file d’attente et la remet au pilote.

Une fois que le pilote a reçu l’objet de requête, il est propriétaire de la demande. Le pilote peut accéder à l’objet de requête via un handle et effectuer des opérations sur l’objet. Bien que le pilote soit propriétaire de l’objet de requête, il peut mettre en file d’attente, terminer, annuler ou transférer la demande, après quoi il ne possède plus l’objet de requête et ne peut pas y accéder.

Lorsque la propriété d’un objet de requête passe entre un pilote et l’infrastructure, la valeur du handle d’objet ne change pas. Par exemple, si un pilote reçoit une requête d’une file d’E/S, la met en file d’attente différente, puis reçoit à nouveau la demande, la valeur du handle ne change pas. De même, si un pilote transfère une demande à une cible d’E/S et reçoit ultérieurement une notification indiquant que la cible d’E/S a terminé la demande, la fonction de rappel de notification du pilote reçoit la même valeur de handle que celle fournie par le pilote à la cible d’E/S.