структура FSRTL_PER_STREAM_CONTEXT (ntifs.h)
Структура FSRTL_PER_STREAM_CONTEXT содержит сведения о контексте, которые драйвер фильтра файловой системы поддерживает в потоке файлов.
Синтаксис
typedef struct _FSRTL_PER_STREAM_CONTEXT {
LIST_ENTRY Links;
PVOID OwnerId;
PVOID InstanceId;
PFREE_FUNCTION FreeCallback;
} FSRTL_PER_STREAM_CONTEXT, *PFSRTL_PER_STREAM_CONTEXT;
Члены
Links
Ссылка на эту структуру в списке всех структур контекста каждого потока, связанных с тем же потоком файлов. FsRtlInsertPerStreamContext вставляет этот элемент в список всех структур контекста каждого потока для файлового потока. Чтобы получить указатель на голову списка из объекта файла, используйте макрос FsRtlGetPerStreamContextPointer и приведите результат к указателю PFSRTL_ADVANCED_FCB_HEADER. Указатель списка — это элемент FilterContexts в структуре заголовка расширенного блока управления файлами (FCB) для потока файлов.
OwnerId
Указатель на выделенную фильтром переменную, которая однозначно определяет владельца структуры контекста потока. Формат этой переменной зависит от драйвера фильтра. Для записи фильтров следует выбрать значение, понятное и удобное, например адрес объекта драйвера или объекта устройства. Драйверы фильтров должны задать для этого элемента значение, отличное отNULL.
InstanceId
Указатель на выделенную фильтром переменную, которую можно использовать для различения структур контекста потока, созданных одним драйвером фильтра. Формат этой переменной зависит от драйвера фильтра. Средство записи фильтров должно выбрать значение, понятное и удобное, например адрес объекта контекста потока для потока файлов. (Чтобы получить этот адрес из объекта файла, используйте макрос FsRtlGetPerStreamContextPoint er.)
Этот элемент является необязательным и может быть NULL.
FreeCallback
Указатель на подпрограмму обратного вызова, которая освобождает структуру контекста потока. Эта подпрограмма и ее параметры определяются следующим образом:
VOID
(*PFREE_FUNCTION) (
IN PVOID Buffer
);
Буфер
Указатель на бесплатную структуру FSRTL_PER_STREAM_CONTEXT.
Замечания
Драйверы фильтров файловой системы могут использовать структуру FSRTL_PER_STREAM_CONTEXT для поддержания контекстной информации для потока файлов. Эта структура может использоваться как или внедрена в определяемую драйвером структуру контекста потока.
Когда файловая система удаляет объект контекста потока для потока файлов, он должен вызывать FsRtlTeardownPerStreamContexts, что, в свою очередь, вызывает FreeCallback подпрограммы всех структур контекста каждого потока, связанных с файлом.
Макрос FsRtlSupportsPerStreamContexts определяет, поддерживает ли файловая система контексты для определенного потока.
BOOLEAN FsRtlSupportsPerStreamContexts(
[in] PFILE_OBJECT FileObject
);
Параметры
FileObject [in]
PFILE_OBJECT
Указатель на объект файла для потока файлов.
Возвращаемое значение
BOOLEAN
Макрос FsRtlSupportsPerStreamContexts возвращает TRUE, если файловая система поддерживает контексты каждого потока для потока, FALSE противном случае.
Драйверы фильтров файловой системы вызывают FsRtlSupportsPerStreamContexts, чтобы определить, поддерживает ли базовая файловая система контексты для потока файлов, представленных заданным объектом файла. Обратите внимание, что файловая система может поддерживать контексты потока для некоторых типов файлов, но не для других. Например, NTFS и FAT в настоящее время не поддерживают контексты для разбиения по страницам.
Дополнительные сведения см. в контексте отслеживания Per-Stream вустаревшего драйвера фильтра файловой системы.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Эта структура — Windows XP |
заголовка | ntifs.h (include Ntifs.h) |
См. также
FsRtlGetPerStreamContextPointer
FsRtlTeardownPerStreamContexts
контекст отслеживания Per-Stream в устаревшем драйвере фильтра файловой системы