FSRTL_PER_FILEOBJECT_CONTEXT 结构 (ntifs.h)

OS 使用不透明的 FSRTL_PER_FILEOBJECT_CONTEXT 结构来跟踪文件对象的文件系统筛选器-驱动程序定义的上下文信息结构。

语法

typedef struct _FSRTL_PER_FILEOBJECT_CONTEXT {
  LIST_ENTRY Links;
  PVOID      OwnerId;
  PVOID      InstanceId;
} FSRTL_PER_FILEOBJECT_CONTEXT, *PFSRTL_PER_FILEOBJECT_CONTEXT;

成员

Links

此结构的链接位于与同一文件对象关联的所有每文件对象上下文结构列表中。 FsRtlInsertPerFileObjectContext 将此成员插入文件对象的所有每文件对象上下文结构列表中。

OwnerId

指向筛选器驱动程序分配的变量的指针,该变量唯一标识每个文件对象上下文结构的拥有筛选器。 此变量的格式特定于筛选器驱动程序。 筛选器编写器应选择既有意义又方便的值,例如筛选器的设备对象或驱动程序对象的地址。 请注意,此成员的值不能为 NULL。

InstanceId

指向筛选器驱动程序分配的变量的指针,该变量可用于区分由同一筛选器驱动程序创建的每个文件对象上下文结构。 此变量的格式特定于筛选器驱动程序。 筛选器编写器应选择既有意义又方便的值,例如文件对象本身的地址。 请注意,此成员的值可以为 NULL。

注解

文件系统筛选器驱动程序可以使用不透明 FSRTL_PER_FILEOBJECT_CONTEXT 结构来维护文件对象的上下文信息。 此结构可以按原样使用或嵌入到驱动程序定义的每个文件对象上下文结构中。

每个文件对象可以有一个与之关联的每个文件对象的上下文结构列表。 此列表的每个成员 (即,筛选器驱动程序) 拥有特定的每文件对象上下文结构。 从筛选器驱动程序的角度来看,每个筛选器驱动程序都可以为同一文件对象关联多个每个文件对象的上下文结构。

每个筛选器定义的 per-file-object 上下文结构都必须包含初始化FSRTL_PER_FILEOBJECT_CONTEXT结构。 可以从分页池或非页池分配FSRTL_PER_FILEOBJECT_CONTEXT结构,并且必须使用 FsRtlInitPerFileObjectContext 宏进行初始化。

若要将FSRTL_PER_FILEOBJECT_CONTEXT结构或筛选器定义的 per-file-object 上下文结构 (包含初始化FSRTL_PER_FILEOBJECT_CONTEXT结构) 插入文件对象的所有上下文结构的列表中,请使用 FsRtlInsertPerFileObjectContext 函数。

FSRTL_PER_FILEOBJECT_CONTEXT或每文件对象上下文结构与文件对象关联后,可以通过调用 FsRtlLookupPerFileObjectContext 来检索它,也可以根据 OwnerIdInstanceId) 的值调用 FsRtlRemovePerFileObjectContext (来检索它。

文件系统微筛选器驱动程序不得使用以下函数:

相反,微筛选器可以使用以下函数将上下文信息与文件对象相关联:

文件系统微筛选器驱动程序不得使用 FsRtlXxxPerFileObjectContext 函数。 相反,微筛选器可以使用 FltXxxContext 函数将上下文信息与文件对象相关联。 有关完整列表,请参阅 FSRTL_PER_FILEOBJECT_CONTEXT 主题。

要求

要求
最低受支持的客户端 Windows Vista
标头 ntifs.h (包括 Fltkernel.h、Ntifs.h)

另请参阅

DEVICE_OBJECT

DRIVER_OBJECT

FILE_OBJECT

FltAllocateContext

FltDeleteContext

FltDeleteStreamHandleContext

FltGetStreamHandleContext

FltReleaseContext

FltSetStreamHandleContext

FsRtlInitPerFileObjectContext

FsRtlInsertPerFileObjectContext

FsRtlLookupPerFileObjectContext

FsRtlRemovePerFileObjectContext