Partager via


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 les informations relatives au mappage de fichiers et 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 ( c’est-à-dire 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 en cache le flux de données pour la première fois. 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 ( c’est-à-dire 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 ( c’est-à-dire une structure CONTROL_AREA) utilisé pour suivre les informations d’état d’un flux de fichiers exécutables. 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 file à l’objet de section d’un flux de fichiers. Autrement dit, par le biais de ses membres, la structure de SECTION_OBJECT_POINTERS connecte un objet de fichier particulier à des 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 ce contenu 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 un instance ouvert 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 (qui est associée au flux).

Pour la première demande d’ouverture de flux de fichiers, le système de fichiers ou le pilote du redirecteur doit :

  1. Allouez une structure SECTION_OBJECT_POINTERS à partir d’un pool non paginé.

  2. Initialisez tous les membres de la structure de SECTION_OBJECT_POINTERS allouée sur NULL.

  3. Définissez le membre SectionObjectPointer de l’objet de fichier associé pour qu’il pointe vers la structure 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 doit définir le membre SectionObjectPointer de l’objet de fichier associé pour qu’il pointe 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 Stream et contextes Per-Stream.

Configuration requise

Condition requise Valeur
En-tête wdm.h (inclure Wdm.h, Ntddk.h, Ntifs.h, Fltkernel.h)

Voir aussi

CcInitializeCacheMap

DEVICE_OBJECT

FILE_OBJECT

FOBX

FSRTL_ADVANCED_FCB_HEADER

IoGetDeviceObjectPointer

MmFlushImageSection

ObDereferenceObject