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 结构来维护文件对象的上下文信息。 此结构可用于 as-is 或嵌入到驱动程序定义的每个文件对象上下文结构中。
每个文件对象可以有一个与每个文件对象上下文结构列表关联的列表。 此列表的每个成员(即特定的每文件对象上下文结构)都由筛选器驱动程序拥有。 从筛选器驱动程序的角度来看,每个筛选器驱动程序可以关联同一文件对象的多个每文件对象上下文结构。
每个筛选器定义的每个文件对象上下文结构都必须包含初始化FSRTL_PER_FILEOBJECT_CONTEXT结构。 FSRTL_PER_FILEOBJECT_CONTEXT结构可以从分页池或非页池进行分配,并且必须使用 FsRtlInitPerFileObjectContext 宏进行初始化。
若要将FSRTL_PER_FILEOBJECT_CONTEXT结构或筛选器定义的每文件对象上下文结构(包含初始化FSRTL_PER_FILEOBJECT_CONTEXT结构)插入文件对象的所有上下文结构列表中,请使用 FsRtlInsertPerFileObjectContext 函数。
FSRTL_PER_FILEOBJECT_CONTEXT或每文件对象上下文结构与文件对象关联后,可以通过调用 FsRtlLookupPerFileObjectContext 或通过调用 FsRtlRemovePerFileObjectContext(基于 OwnerId 和 InstanceId的值)来检索它。
文件系统微型筛选器驱动程序不得使用以下函数:
- FsRtlInitPerFileObjectContext
- FsRtlInsertPerFileObjectContext
- FsRtlLookupPerFileObjectContext
- FsRtlRemovePerFileObjectContext
相反,微型筛选器可以使用以下函数将上下文信息与文件对象相关联:
- FltAllocateContext
- FltDeleteContext
- FltSetStreamHandleContext
- FltDeleteStreamHandleContext
- FltGetStreamHandleContext
- FltReleaseContext
文件系统微型筛选器驱动程序不得使用 FsRtlXxxPerFileObjectContext 函数。 相反,微筛选器可以使用 FltXxxContext 函数将上下文信息与文件对象相关联。 有关完整列表,请参阅 FSRTL_PER_FILEOBJECT_CONTEXT 主题。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows Vista |
标头 | ntifs.h (包括 Fltkernel.h、 Ntifs.h) |
另请参阅
FsRtlInsertPerFileObjectContext