Partager via


E/S par paquets avec IRP réutilisables

Le gestionnaire d’E/S, le gestionnaire Plug-and-Play et le gestionnaire d’alimentation utilisent des paquets de demande d’E/S (IRPs) pour communiquer avec les pilotes en mode noyau et 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 fournisseurs d’intégration pour représenter les demandes d’E/S.

  • Achemine les IRPs vers les pilotes appropriés.

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

  • Retourne l’état au requérant initial 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 accéder à un pilote de système de fichiers, via un pilote 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, ainsi qu’un emplacement de pile d’E/S spécifique au pilote pour chaque pilote qui contrôle l’appareil :

  • Dans la partie fixe (ou en-tête), le gestionnaire d’E/S conserve des informations sur la demande d’origine, telles que l’ID de thread et les paramètres 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’état d’E/S, dans lequel les pilotes définissent des informations sur l’état de l’opération d’E/S demandée.

  • Dans l’emplacement de pile d’E/S du pilote de niveau supérieur, le gestionnaire d’E/S, le gestionnaire Plug-and-Play ou power Manager 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 des 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 pilote. En outre, les pilotes de niveau supérieur peuvent créer (ou réutiliser) des irPs pour envoyer des requêtes vers le bas vers des pilotes de niveau inférieur.

Pour obtenir une discussion détaillée sur les IRP, consultez Gestion des irps.