structure SECTION_OBJECT_POINTERS (wdm.h)
La structure SECTION_OBJECT_POINTERS, allouée par un système de fichiers ou un pilote de redirecteur, est utilisée par le gestionnaire de mémoire et le gestionnaire de cache pour stocker le mappage de fichiers et les informations relatives au cache pour un flux de fichiers.
Syntaxe
typedef struct _SECTION_OBJECT_POINTERS {
PVOID DataSectionObject;
PVOID SharedCacheMap;
PVOID ImageSectionObject;
} SECTION_OBJECT_POINTERS;
Membres
DataSectionObject
Pointeur opaque vers un objet de section de données (autrement dit, une structure CONTROL_AREA) utilisé pour suivre les informations d’état d’un flux de fichiers de données. Le gestionnaire de mémoire définit ce membre lorsque le système d’exploitation met d’abord en cache le flux de données. Une valeur NULL indique que le flux de données n’est actuellement pas en mémoire ; toutefois, cette valeur peut changer à tout moment.
SharedCacheMap
Pointeur opaque vers un objet de mappage de cache (autrement dit, une structure SHARED_CACHE_MAP) utilisé pour suivre les vues mappées au flux de fichiers de données. Le gestionnaire de cache définit ce membre lorsque le système d’exploitation met d’abord en cache le flux. Une valeur NULL indique que le flux de données n’est actuellement pas mis en cache ; toutefois, cette valeur peut changer à tout moment.
ImageSectionObject
Pointeur opaque vers un objet de section d’image (autrement dit, une structure CONTROL_AREA) utilisé pour suivre les informations d’état d’un flux de fichiers exécutable. Le gestionnaire de mémoire définit ce membre chaque fois qu’une section d’image exécutable est créée pour le flux. Une valeur NULL indique que l’image exécutable n’est actuellement pas en mémoire ; toutefois, cette valeur peut changer à tout moment.
Remarques
La structure SECTION_OBJECT_POINTERS lie un objet de fichier à l’objet de section d’un flux de fichiers. Autrement dit, par le biais de ses membres, la structure SECTION_OBJECT_POINTERS connecte un objet de fichier particulier aux structures de contrôle de mémoire virtuelle qui effectuent le suivi du contenu du flux lorsqu’ils sont en mémoire et permettent au système d’exploitation d’extraire ces contenus lorsqu’ils ne le sont pas.
Il existe une relation un-à-un entre une structure SECTION_OBJECT_POINTERS et un flux de fichiers. Plusieurs objets de fichier peuvent être associés à un flux de fichiers particulier, chacun représentant une instance ouverte du flux. Toutefois, une seule structure SECTION_OBJECT_POINTERS peut être associée à un flux donné. S’il existe plusieurs objets de fichier pour un flux, le membre SectionObjectPointer pour tous les objets de fichier doit pointer vers la même structure SECTION_OBJECT_POINTERS (associée au flux).
Pour la première requête ouverte du flux de fichiers, le système de fichiers ou le pilote de redirecteur doit :
Allouez une structure SECTION_OBJECT_POINTERS à partir d’un pool non paginé.
Initialisez tous les membres de la structure de SECTION_OBJECT_POINTERS allouée pour NULL.
Définissez le membre
SectionObjectPointer de l’objet de fichier associé pour qu’il pointe vers la structure de SECTION_OBJECT_POINTERS initialisée.
Pour les demandes ouvertes suivantes sur le même flux de fichiers, le système de fichiers ou le pilote de redirecteur doivent définir le membre SectionObjectPointer de l’objet de fichier associé pour pointer vers la structure SECTION_OBJECT_POINTERS précédemment allouée pour le flux de fichiers.
Avertissement
Les pilotes de filtre de système de fichiers doivent traiter les membres de la structure SECTION_OBJECT_POINTERS comme opaques, car le système de fichiers sous-jacent est responsable de la synchronisation des membres et, par conséquent, peut modifier leurs valeurs à tout moment.
Un fichier est composé d’un ou plusieurs flux, selon le système de fichiers. Pour plus d’informations, consultez Flux de fichiers, Contextes de flux et contextes Per-Stream.
Exigences
Exigence | Valeur |
---|---|
d’en-tête | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Fltkernel.h) |