FsRtlRemovePerFileObjectContext 函数 (ntifs.h)

对于“旧”文件系统筛选器驱动程序,FsRtlRemovePerFileObjectContext 函数从以前与文件对象关联的每文件对象上下文列表中取消链接每文件对象上下文信息结构。

语法

PFSRTL_PER_FILEOBJECT_CONTEXT FsRtlRemovePerFileObjectContext(
  [in]           PFILE_OBJECT FileObject,
  [in, optional] PVOID        OwnerId,
  [in, optional] PVOID        InstanceId
);

参数

[in] FileObject

指向要删除其上下文信息的文件对象的指针。

[in, optional] OwnerId

指向调用方分配的变量的指针,该变量唯一标识每个文件对象上下文结构的拥有筛选器。 此变量的格式特定于筛选器驱动程序。

[in, optional] InstanceId

指向调用方分配的变量的指针,该变量可用于区分同一筛选器驱动程序创建的每个文件对象上下文结构。 此变量的格式特定于筛选器驱动程序。 此参数是可选的,可以 NULL

返回值

FsRtlRemovePerFileObjectContext 取消链接,并返回指向找到的每个文件对象上下文的第一个匹配的指针。 如果未找到匹配项,FsRtlRemovePerFileObjectContext 返回 null

言论

“旧”文件系统筛选器驱动程序调用 FsRtlRemovePerFileObjectContext 从与文件对象关联的每个文件对象上下文列表中取消链接自己的每文件对象上下文结构。 所有此类上下文结构以前都必须通过调用 FsRtlInsertPerFileObjectContext与文件对象相关联。

如果调用 FsRtlRemovePerFileObjectContext 成功,则第一个与 OwnerId 匹配的每个文件对象上下文结构(如果存在),并返回指向它的指针 InstanceId。 筛选器驱动程序可以使用此指针释放未链接的上下文结构。

注意FsRtlRemovePerFileObjectContext 仅取消链接找到的第一个匹配每文件对象上下文结构。 如果每个文件对象上下文还有其他匹配项,则筛选器驱动程序必须调用 FsRtlRemovePerFileObjectContext 根据需要多次取消链接它们。
 
若要初始化每文件对象上下文结构,请使用 FsRtlInitPerFileObjectContext 宏。

若要将初始化的每个文件对象上下文结构与文件对象相关联,请使用 FsRtlInsertPerFileObjectContext 函数。

若要检索与文件对象关联的每文件对象上下文结构,请使用 FsRtlLookupPerFileObjectContext 函数。

注释 旧版筛选器驱动程序必须调用 FsRtlRemovePerFileObjectContext 函数,以在完成IRP_MJ_CLOSE之前取消链接和释放上下文信息结构。 否则,分配给该上下文结构的内存将泄漏。
 
此外,文件系统微型筛选器驱动程序不得使用 FsRtlXxxPerFileObjectContext 函数。 相反,他们可以使用适当的 FltXxxContext 函数。 有关详细信息,请参阅 FSRTL_PER_FILEOBJECT_CONTEXT 主题。

要求

要求 价值
最低支持的客户端 Windows Vista
目标平台 普遍
标头 ntifs.h (包括 Fltkernel.h、 Ntifs.h)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

另请参阅

FSRTL_PER_FILEOBJECT_CONTEXT

FsRtlInitPerFileObjectContext

FsRtlInsertPerFileObjectContext

FsRtlLookupPerFileObjectContext