Поделиться через


структура SECTION_OBJECT_POINTERS (wdm.h)

Структура SECTION_OBJECT_POINTERS, выделенная файловой системой или драйвером перенаправления, используется диспетчером памяти и диспетчером кэша для хранения сведений о сопоставлении файлов и кэше для потока файлов.

Синтаксис

typedef struct _SECTION_OBJECT_POINTERS {
  PVOID DataSectionObject;
  PVOID SharedCacheMap;
  PVOID ImageSectionObject;
} SECTION_OBJECT_POINTERS;

Члены

DataSectionObject

Непрозрачный указатель на объект раздела данных (т. е. структура CONTROL_AREA), которая используется для отслеживания сведений о состоянии для потока файлов данных. Диспетчер памяти задает этот элемент, когда операционная система сначала кэширует поток данных. Значение NULL указывает, что поток данных в настоящее время не находится в памяти; Однако это значение может измениться в любое время.

SharedCacheMap

Непрозрачный указатель на объект карты кэша (т. е. структура SHARED_CACHE_MAP), которая используется для отслеживания представлений, сопоставленных с потоком файлов данных. Диспетчер кэша задает этот элемент, когда операционная система сначала кэширует поток. Значение NULL указывает, что поток данных в настоящее время не кэшируется; Однако это значение может измениться в любое время.

ImageSectionObject

Непрозрачный указатель на объект раздела изображения (т. е. структура CONTROL_AREA), которая используется для отслеживания сведений о состоянии для исполняемого потока файлов. Диспетчер памяти устанавливает этот элемент всякий раз, когда для потока создается раздел исполняемого образа. Значение NULL указывает, что исполняемый образ в настоящее время не находится в памяти; Однако это значение может измениться в любое время.

Замечания

Структура SECTION_OBJECT_POINTERS связывает объект файла с объектом раздела файлового потока. То есть через его члены структура SECTION_OBJECT_POINTERS подключает определенный файловый объект к структурам управления виртуальной памятью, которые отслеживают содержимое потока, когда они находятся в памяти, и позволяют операционной системе получить эти содержимое, если они не являются.

Между структурой SECTION_OBJECT_POINTERS и потоком файлов существует связь "один к одному". Несколько объектов файлов могут быть связаны с определенным потоком файлов, каждый из которых представляет открытый экземпляр потока. Однако с данным потоком можно связать только одну SECTION_OBJECT_POINTERS структуру. Если для потока существует несколько объектов файлов, элемент SectionObjectPointer для всех объектов файлов должен указывать на одну и ту же структуру SECTION_OBJECT_POINTERS (связанную с потоком).

Для первого запроса на открытие потока файлов файловая система или драйвер перенаправления должны:

  1. Выделите структуру SECTION_OBJECT_POINTERS из непагированного пула.

  2. Инициализировать все элементы выделенной структуры SECTION_OBJECT_POINTERS, чтобы NULL.

  3. Задайте элемент SectionObjectPointer объекта файла для указания на инициализированную структуру SECTION_OBJECT_POINTERS.

Для последующих открытых запросов к тому же потоку файловая система или драйвер перенаправления должны задать элемент SectionObjectPointer, указывающий на ранее выделенную SECTION_OBJECT_POINTERS структуру для файлового потока.

Предупреждение

Драйверы фильтров файловой системы должны рассматривать элементы структуры SECTION_OBJECT_POINTERS как непрозрачные, так как базовая файловая система отвечает за синхронизацию членов и, следовательно, может изменять их значения в любое время.

Файл состоит из одного или нескольких потоков в зависимости от файловой системы. Дополнительные сведения см. в разделе Файловых потоков, контекстов потоков и Per-Stream контекстов.

Требования

Требование Ценность
заголовка wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Fltkernel.h)

См. также

CcInitializeCacheMap

DEVICE_OBJECT

FILE_OBJECT

FOBX

FSRTL_ADVANCED_FCB_HEADER

IoGetDeviceObjectPointer

MmFlushImageSection

ObDereferenceObject