структура 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) |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по