Partager via


Packet-Driven E/S avec les IRP réutilisables

Le gestionnaire d’E/S, le gestionnaire Plug-and-Play et le gestionnaire d’alimentation utilisent des paquets de demandes d’E/S (IRPs) pour communiquer avec les pilotes en mode noyau et pour permettre aux pilotes de communiquer entre eux.

Le gestionnaire d’E/S effectue les étapes suivantes :

  • Accepte les demandes d’E/S, qui proviennent généralement d’applications en mode utilisateur.

  • Crée des IRP pour représenter les demandes d’E/S.

  • Achemine les IRP vers les pilotes appropriés.

  • Effectue le suivi des IRPs jusqu’à ce qu’ils soient terminés.

  • Retourne le status au demandeur d’origine de chaque opération d’E/S.

Un IRP peut être acheminé vers plusieurs pilotes. Par exemple, une demande d’ouverture d’un fichier sur un disque peut d’abord être adressée à un pilote de système de fichiers, via un pilote de miroir intermédiaire, et finalement à un pilote de disque et, éventuellement, à un pilote de bus matériel PnP. Cet ensemble de pilotes est appelé pile de pilotes.

Par conséquent, chaque IRP a une partie fixe, plus un emplacement de pile d’E/S spécifique au pilote pour chaque pilote qui contrôle l’appareil :

  • Dans la partie fixe (ou l’en-tête), le gestionnaire d’E/S conserve des informations sur la demande d’origine, telles que l’ID et les paramètres du thread de l’appelant, l’adresse de l’objet d’appareil sur lequel un fichier est ouvert, etc. La partie fixe contient également un bloc d’E/S status, dans lequel les pilotes définissent des informations sur la status de l’opération d’E/S demandée.

  • Dans l’emplacement de la pile d’E/S du pilote de niveau le plus élevé, le gestionnaire d’E/S, Plug-and-Play manager ou le gestionnaire d’alimentation définit des paramètres spécifiques au pilote, tels que le code de fonction de l’opération demandée et le contexte que le pilote correspondant utilise pour déterminer ce qu’il doit faire. À son tour, chaque pilote configure l’emplacement de la pile d’E/S du pilote inférieur suivant dans la pile de pilotes.

À mesure que chaque pilote traite un IRP, il peut accéder à son emplacement de pile d’E/S dans l’IRP, réutilisant ainsi l’IRP à chaque étape des opérations du conducteur. En outre, les pilotes de niveau supérieur peuvent créer (ou réutiliser) des IRP pour envoyer des demandes à des pilotes même de niveau inférieur.

Pour une présentation détaillée des IRP, consultez Gestion des IRP.