Поделиться через


структура 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 всех структур контекста каждого потока, связанных с потоком файлов.

Примечание Подпрограмма FreeCallback не может рекурсивно вызывать в файловую систему или получать ресурсы файловой системы. Кроме того, эта подпрограмма должна предполагать, что объект файла для файлового потока уже освобожден.
 
Структура FSRTL_PER_STREAM_CONTEXT может быть выделена из страничного или невыгружаемого пула.

Макрос 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)

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

FSRTL_ADVANCED_FCB_HEADER

FSRTL_COMMON_FCB_HEADER

FsRtlGetPerStreamContextPointer

FsRtlInsertPerStreamContext

FsRtlLookupPerStreamContext

FsRtlRemovePerStreamContext

FsRtlTeardownPerStreamContexts

PFREE_FUNCTION

Отслеживание контекста Per-Stream в устаревшем драйвере фильтра файловой системы