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 指针。 列表指针是文件流高级文件控制块 (FCB) 标头结构中的 FilterContexts 成员。
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 目前不支持分页文件的按流上下文。
有关详细信息,请参阅旧文件系统筛选器驱动程序中的
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 此结构是 Windows XP |
标头 | ntifs.h (include Ntifs.h) |
另请参阅
FsRtlGetPerStreamContextPointer
FsRtlTeardownPerStreamContexts
在旧文件系统筛选器驱动程序 中跟踪 Per-Stream 上下文