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 ,以从与文件对象关联的每文件对象上下文列表中取消链接其自己的 per-file-object 上下文结构。 以前,所有此类上下文结构都必须通过调用 FsRtlInsertPerFileObjectContext 与文件对象相关联。

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

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

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

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

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

要求

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

另请参阅

FSRTL_PER_FILEOBJECT_CONTEXT

FsRtlInitPerFileObjectContext

FsRtlInsertPerFileObjectContext

FsRtlLookupPerFileObjectContext