структура 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
Указатель на переменную, выделенную драйвером фильтра, которую можно использовать для различения структур контекста для каждого потока, созданных одним и тем же драйвером фильтра. Формат этой переменной зависит от драйвера фильтра. Модули записи фильтров должны выбрать понятное и удобное значение, например адрес объекта контекста потока для файлового потока. (Чтобы получить этот адрес из объекта файла, используйте макрос FsRtlGetPerStreamContextPointer .)
Этот элемент является необязательным и может иметь значение 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 (включая Ntifs.h) |
См. также раздел
FsRtlGetPerStreamContextPointer
FsRtlTeardownPerStreamContexts
Отслеживание контекста Per-Stream в устаревшем драйвере фильтра файловой системы