Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’une des principales responsabilités des piles de pilotes consiste à transférer des données entre les applications en mode utilisateur et les appareils d’un système. Le système d’exploitation fournit les trois méthodes suivantes pour accéder aux mémoires tampons de données :
E/S mises en mémoire tampon
Le système d’exploitation crée une mémoire tampon système non paginée, de taille égale à celle de la mémoire tampon de l’application. Pour les opérations d’écriture, le gestionnaire d’E/S copie les données utilisateur dans la mémoire tampon système avant d’appeler la pile de pilotes. Pour les opérations de lecture, le gestionnaire d’E/S copie les données de la mémoire tampon système dans la mémoire tampon de l’application une fois la pile de pilotes terminée l’opération demandée.
Pour plus d’informations, consultez Utilisation des E/S mises en mémoire tampon.
Direct I/O
Le système d’exploitation verrouille la mémoire tampon de l’application. Il crée ensuite une liste de descripteurs de mémoire (MDL) qui identifie les pages de mémoire verrouillées et transmet le MDL à la pile des pilotes. Les pilotes accèdent aux pages verrouillées via mdL.
Pour plus d’informations, consultez Utilisation d’E/S directes.
Ni mise en mémoire tampon ni E/S directes
Le système d’exploitation transmet l’adresse et la taille de départ virtuelles de la mémoire tampon d’application à la pile des pilotes. La mémoire tampon est accessible uniquement à partir de pilotes qui s’exécutent dans le contexte de thread de l’application.
Pour plus d’informations, consultez Utilisation d’E/S sans mémoire tampon ni d’E/S directes.
Pour les requêtes IRP_MJ_READ et IRP_MJ_WRITE , les pilotes spécifient la méthode d’E/S à l’aide d’indicateurs dans chaque structure DEVICE_OBJECT . Pour plus d’informations, consultez Initialisation d’un objet d’appareil.
Pour les requêtes IRP_MJ_DEVICE_CONTROL et IRP_MJ_INTERNAL_DEVICE_CONTROL , la méthode d’E/S est déterminée par la valeur TransferType contenue dans chaque valeur IOCTL. Pour plus d’informations, consultez Définition des codes de contrôle d’E/S.
Tous les pilotes d’une pile de pilotes doivent utiliser la même méthode d’accès à la mémoire tampon pour chaque requête, sauf éventuellement pour le pilote de niveau supérieur (qui peut utiliser la méthode « ni », quelle que soit la méthode utilisée par les pilotes inférieurs).