Détermination de la méthode de mise en mémoire tampon pour une opération d’E/S
À l’instar des pilotes de périphérique, les systèmes de fichiers sont chargés de 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 :
Dans les E /S mises en mémoire tampon, le gestionnaire d’E/S alloue une mémoire tampon système pour l’opération à partir d’un pool non paginé. Le gestionnaire d’E/S copie les données de cette mémoire tampon système dans la mémoire tampon utilisateur de l’application, et vice versa, dans le contexte du thread qui a lancé l’opération d’E/S.
Dans les E/S directes, le gestionnaire d’E/S sonde et verrouille la mémoire tampon utilisateur. Il crée ensuite une liste de descripteurs mémoire (MDL) pour mapper la mémoire tampon verrouillée. Le gestionnaire d’E/S accède à la mémoire tampon dans le contexte du thread qui a lancé l’opération d’E/S.
Dans les E/S directes ou mises en mémoire tampon, le gestionnaire d’E/S n’alloue pas de mémoire tampon système et ne verrouille ni ne mappe la mémoire tampon utilisateur. Au lieu de cela, il transmet simplement l’adresse virtuelle de l’espace utilisateur d’origine de la mémoire tampon à la pile du système de fichiers. Les pilotes sont chargés de s’assurer qu’ils s’exécutent dans le contexte du thread de lancement et que les adresses de mémoire tampon sont valides.
Les pilotes minifilter doivent valider toute adresse dans l’espace utilisateur avant d’essayer de l’utiliser. Le gestionnaire d’E/S et le gestionnaire de filtres ne valident pas ces adresses et ne valident pas les pointeurs incorporés dans les mémoires tampons qui sont passées aux pilotes de minifiltre.
Tous les systèmes de fichiers Microsoft standard n’utilisent ni mise en mémoire tampon ni E/S directes pour la plupart des traitements d’E/S.
Pour plus d’informations sur les méthodes de mise en mémoire tampon, consultez Méthodes d’accès aux mémoires tampons de données.
Pour les opérations d’E/S basées sur IRP, la méthode de mise en mémoire tampon utilisée est spécifique à l’opération et est déterminée par les facteurs suivants :
Type d’opération d’E/S en cours d’exécution
Valeur du membre Flags de la structure DEVICE_OBJECT pour le volume du système de fichiers
Pour les opérations de contrôle d’E/S (IOCTL) et de contrôle de système de fichiers (FSCTL), la valeur du paramètre TransferType qui a été passé à la macro CTL_CODE lors de la définition de l’IOCTL ou du FSCTL
Les opérations d’E/S rapides qui ont des mémoires tampons n’utilisent jamais d’E/S directes ou mises en mémoire tampon.
Les opérations de rappel de système de fichiers n’ont pas de mémoire tampon.
Cette section comprend :
Opérations qui peuvent être IRP-Based ou des E/S rapides
Opérations d’E/S basées sur IRP qui obéissent aux indicateurs d’objet d’appareil
Opérations d’E/S basées sur IRP qui utilisent toujours des E/S mises en mémoire tampon
Opérations d’E/S basées sur IRP qui n’utilisent toujours ni mise en mémoire tampon ni E/S directes