用于上下文的文件系统支持
若要支持文件上下文 ((如果适用)) 、流上下文和文件对象 (流句柄) 上下文,文件系统必须使用 FSRTL_ADVANCED_FCB_HEADER 结构。 所有 Microsoft Windows 文件系统都使用此结构,强烈建议所有第三方文件系统开发人员也这样做。 有关详细信息,请参阅 FsRtlSetupAdvancedHeader 和 FSRTL_ADVANCED_FCB_HEADER。
NTFS 和 FAT 文件系统不支持对分页文件、在预创建或关闭后路径中或 IRP_MJ_NETWORK_QUERY_OPEN 操作的文件、流或文件对象上下文。
微筛选器驱动程序可以通过分别调用 FltSupportsStreamContexts 和 FltSupportsStreamHandleContexts 来确定文件系统是否支持给定文件对象的流 上下文和文件对象上下文。
文件上下文在 Windows Vista 及更高版本上可用。
对于每个文件仅支持单个数据流的文件系统 ((例如 FAT) ),文件上下文等效于流上下文。 此类文件系统通常支持流上下文,但不支持文件上下文。 相反,筛选器管理器使用文件系统对流上下文的现有支持来提供此支持。 对于附加到这些文件系统的微筛选器驱动程序实例,FltSupportsFileContexts 返回 FALSE,而 FltSupportsFileContextsEx 在为 Instance 参数) 传递有效的非 NULL 值时,FltSupportsFileContextsEx 返回 TRUE (。
如果某个文件不支持上下文类型,则微筛选器无法将该类型的上下文附加到该文件。
若要支持文件上下文,文件系统必须:
在其文件上下文结构中嵌入 PVOID 类型的 FileContextSupportPointer 成员,通常是文件上下文块 (FCB) 。 文件系统必须将此成员初始化为 NULL。
使用 FsRtlSetupAdvancedHeaderEx (而不是 FsRtlSetupAdvancedHeader) 初始化其流上下文结构,将有效指针传递到 FileContextSupportPointer 成员 (嵌入在 FileContextSupportPointer 参数的相应文件上下文结构) 。 有关详细信息,请参阅 FsRtlSetupAdvancedHeaderEx 和 FSRTL_ADVANCED_FCB_HEADER。
当文件系统删除文件的文件上下文结构时,调用 FsRtlTeardownPerFileContexts 以释放筛选器和微筛选器驱动程序与文件关联的所有文件上下文结构。