структура 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
Битовая маска флагов, которая указывает на поддержку различных функций. Этот элемент должен быть битовой комбинацией OR одного или нескольких из следующих значений:
Ценность | Значение |
---|---|
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 | Для файла существует монопольная блокировка диапазона байтов. Вызывающий объект должен вызывать |
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, и этот флаг не задан, объект файла является объектом потока, а поток — это поток без записи (MNW).
Если FsContext2 член файла имеет значение 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 в своих объектах контекста потока. Все файловые системы Майкрософт используют эту структуру, и все сторонние разработчики файловой системы также должны сделать это. ФКБ и SCB для всех классов открытых запросов, включая открытые тома запросы, должны включать эту структуру.
Если файл используется в качестве разбиения по страницам, FSRTL_ADVANCED_FCB_HEADER структура должна быть выделена из непагрегированного пула. В противном случае его можно выделить из страничного или непагированного пула.
Требования
Требование | Ценность |
---|---|
заголовка | ntifs.h (include Ntifs.h, Fltkernel.h) |