структура FSRTL_COMMON_FCB_HEADER (ntifs.h)

Не используйте структуру FSRTL_COMMON_FCB_HEADER вне структуры FSRTL_ADVANCED_FCB_HEADER . Структура FSRTL_COMMON_FCB_HEADER содержит контекстную информацию о файле, каталоге, томе или альтернативном потоке данных, которая хранится в файловой системе.

Синтаксис

typedef struct _FSRTL_COMMON_FCB_HEADER {
  CSHORT        NodeTypeCode;
  CSHORT        NodeByteSize;
  UCHAR         Flags;
  UCHAR         IsFastIoPossible;
  UCHAR         Flags2;
  UCHAR         Reserved : 4;
  UCHAR         Version : 4;
  PERESOURCE    Resource;
  PERESOURCE    PagingIoResource;
  LARGE_INTEGER AllocationSize;
  LARGE_INTEGER FileSize;
  LARGE_INTEGER ValidDataLength;
} FSRTL_COMMON_FCB_HEADER;

Члены

NodeTypeCode

Зарезервировано для системного использования.

NodeByteSize

Зарезервировано для системного использования.

Flags

Битовая маска флагов, которые указывают на поддержку различных функций. Этот элемент должен быть побитовой комбинацией ИЛИ одного или нескольких из следующих значений:

Значение Значение
FSRTL_FLAG_FILE_MODIFIED Зарезервировано для системного использования.
FSRTL_FLAG_FILE_LENGTH_CHANGED Зарезервировано для системного использования.
FSRTL_FLAG_LIMIT_MODIFIED_PAGES Зарезервировано для системного использования. Драйверы файловой системы (за исключением драйверов фильтров), которые должны устанавливать или очищать ограничение измененных данных для файла, должны вызывать CcSetDirtyPageThreshold.
FSRTL_FLAG_ACQUIRE_MAIN_RSRC_EX Зарезервировано для системного использования.
FSRTL_FLAG_ACQUIRE_MAIN_RSRC_SH Зарезервировано для системного использования.
FSRTL_FLAG_USER_MAPPED_FILE Диспетчер кэша устанавливает этот флаг, чтобы указать, что представление сопоставлено с файлом.
FSRTL_FLAG_ADVANCED_HEADER Этот флаг указывает, что файловая система использует FSRTL_ADVANCED_FCB_HEADER вместо FSRTL_COMMON_FCB_HEADER в структурах блоков управления файлами (FCB). Этот флаг является обязательным, так как использование структуры FSRTL_COMMON_FCB_HEADER за пределами структуры FSRTL_ADVANCED_FCB_HEADER является нерекомендуемой.
FSRTL_FLAG_EOF_ADVANCE_ACTIVE Зарезервировано для системного использования.

IsFastIoPossible

Этот элемент должен иметь одно из следующих значений:

Значение Значение
FastIoIsPossible Возможен быстрый ввод-вывод.
FastIoIsQuestionable Для файла существует монопольная блокировка диапазона байтов. Вызывающий объект должен вызвать подпрограмму FastIoCheckIfPossible файловой системы.
FastIoIsNotPossible FcB для файла является плохим, или для файла существует оппортунистическая блокировка (также называемая "oplock").

Дополнительные сведения об этих значениях см. в справочных записях для FsRtlAreThereCurrentFileLocks, FsRtlCopyRead и FsRtlCopyWrite.

Flags2

Битовая маска флагов, которые файловая система устанавливает для указания поддержки различных функций. Этот элемент должен иметь одно или несколько из следующих значений:

Значение Значение
FSRTL_FLAG2_DO_MODIFIED_WRITE Дополнительные сведения см. в этой таблице.
FSRTL_FLAG2_PURGE_WHEN_MAPPED Если этот флаг установлен, диспетчер кэша очищает и очищает карту кэша, когда пользователь сначала сопоставляет файл.
FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS Этот флаг указывает, что файловая система использует FSRTL_ADVANCED_FCB_HEADER вместо FSRTL_COMMON_FCB_HEADER в своих структурах FCB. Этот флаг является обязательным, так как использование структуры FSRTL_COMMON_FCB_HEADER за пределами структуры FSRTL_ADVANCED_FCB_HEADER является нерекомендуемой.
FSRTL_FLAG2_IS_PAGING_FILE Если задано значение , этот заголовок FCB связан с файлом подкачки.

Флаг FSRTL_FLAG2_DO_MODIFIED_WRITE используется вместе с элементом FsContext2 файлового объекта для файлового потока следующим образом:

  • Если элемент FsContext2 объекта файла не равен NULL, файловый поток представляет открытый экземпляр файла или каталога, а значение этого флага игнорируется операционной системой.

  • Если элемент FsContext2 объекта файла имеет значение NULL и этот флаг не установлен, объект file является объектом файла потока, а поток — потоком без записи (MNW).

  • Если элемент FsContext2 объекта file имеет значение NULL и этот флаг установлен, файловый объект является объектом файла потока, а поток доступен для записи.

Reserved

Зарезервировано для системного использования. Драйверы должны задать для этого битового поля нулевое значение.

Version

Зарезервировано для системного использования. Это битовое поле задается макросом FsRtlSetupAdvancedHeader или FsRtlSetupAdvancedHeaderEx . Начиная с Windows Vista значение этого битового поля FSRTL_FCB_HEADER_V1 или больше; В противном случае значение равно FSRTL_FCB_HEADER_V0. Дополнительные сведения см. в FSRTL_ADVANCED_FCB_HEADER .

Resource

Указатель на инициализированную переменную ресурса, для которой файловая система предоставляет хранилище, которое будет использоваться для синхронизации доступа ввода-вывода к FCB. Переменная ресурса должна быть выделена из непагрегированного пула.

Драйверы фильтров должны рассматривать этот элемент как непрозрачный.

PagingIoResource

Указатель на дополнительную переменную ресурса, для которой файловая система предоставляет хранилище, которое будет использоваться для синхронизации доступа ввода-вывода подкачки с FCB. Переменная ресурса должна быть выделена из непагрегированного пула.

Драйверы фильтров должны рассматривать этот элемент как непрозрачный.

AllocationSize

Размер выделения для файлового потока.

Дополнительные сведения о членах AllocationSize, FileSize и ValidDataLength см. в разделе CcInitializeCacheMap.

FileSize

Размер файла файлового потока.

ValidDataLength

Допустимая длина данных в потоке файлов.

Комментарии

Файловые системы должны задавать элемент FsContext каждого объекта файла, чтобы он указывал на структуру FSRTL_ADVANCED_FCB_HEADER . Эта структура может быть внедрена в структуру контекста потока файловой системы (остальная часть этой структуры зависит от файловой системы). Обычно структура FSRTL_ADVANCED_FCB_HEADER представляет собой блок управления файлами (FCB). Однако в некоторых файловых системах, поддерживающих несколько потоков данных, таких как NTFS, это блок управления потоками (SCB).

Для поддержки диспетчера фильтров и контекстов фильтров файловые системы должны использовать структуру FSRTL_ADVANCED_FCB_HEADER в своих объектах контекста потока. Эта структура используется во всех файловых системах Майкрософт, и все сторонние разработчики файловых систем также должны сделать это. Эта структура должна включаться в fcb и SCB для всех классов открытых запросов, включая запросы на открытие томов.

Если файл используется в качестве файла подкачки, структура FSRTL_ADVANCED_FCB_HEADER должна быть выделена из непагрегированного пула. В противном случае его можно выделить из выгружаемого или невыгружаемого пула.

Требования

Требование Значение
Заголовок ntifs.h (включая Ntifs.h, Fltkernel.h)

См. также раздел

CcInitializeCacheMap

FSRTL_ADVANCED_FCB_HEADER

FSRTL_PER_STREAM_CONTEXT

FsRtlAreThereCurrentFileLocks

FsRtlCopyRead

FsRtlCopyWrite

FsRtlSetupAdvancedHeader

FsRtlSetupAdvancedHeaderEx