структура 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 (связанную с потоком).
Для первого запроса на открытие потока файлов файловая система или драйвер перенаправления должны:
Выделите структуру SECTION_OBJECT_POINTERS из непагированного пула.
Инициализировать все элементы выделенной структуры SECTION_OBJECT_POINTERS, чтобы NULL.
Задайте элемент SectionObjectPointer объекта файла для указания на инициализированную структуру SECTION_OBJECT_POINTERS.
Для последующих открытых запросов к тому же потоку файловая система или драйвер перенаправления должны задать элемент
Предупреждение
Драйверы фильтров файловой системы должны рассматривать элементы структуры SECTION_OBJECT_POINTERS как непрозрачные, так как базовая файловая система отвечает за синхронизацию членов и, следовательно, может изменять их значения в любое время.
Файл состоит из одного или нескольких потоков в зависимости от файловой системы. Дополнительные сведения см. в разделе Файловых потоков, контекстов потоков и Per-Stream контекстов.
Требования
Требование | Ценность |
---|---|
заголовка | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Fltkernel.h) |