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