FsRtlRemovePerFileContext 函数 (ntifs.h)

FsRtlRemovePerFileContext 例程返回指向与文件关联的 FSRTL_PER_FILE_CONTEXT 对象的指针。 FsRtlRemovePerFileContext 从它占用的列表中删除 FSRTL_PER_FILE_CONTEXT 对象,以及关联的驱动程序特定上下文信息。

语法

PFSRTL_PER_FILE_CONTEXT FsRtlRemovePerFileContext(
  [in]           PVOID *PerFileContextPointer,
  [in, optional] PVOID OwnerId,
  [in, optional] PVOID InstanceId
);

参数

[in] PerFileContextPointer

指向文件系统运行时库 (FSRTL) 包用于跟踪文件上下文的不透明指针的指针。 若要从文件对象获取此指针,请使用 FsRtlGetPerFileContextPointer 宏。

[in, optional] OwnerId

指向筛选器驱动程序分配的变量的指针,该变量唯一标识每个文件上下文结构的所有者。 此参数是可选的,但如果 InstanceId 为非 NULL,则必须为非 NULL。

[in, optional] InstanceId

指向筛选器驱动程序分配的变量的指针,该变量可用于区分同一筛选器驱动程序创建的按文件上下文结构。 此参数是可选的。

返回值

指向与 OwnerId 匹配的第一个 FSRTL_PER_FILE_CONTEXT 的指针,如果指定,则 InstanceId。 如果未找到匹配项,或者系统不支持每个文件上下文信息,则此例程返回 NULL。

言论

FsRtlRemovePerFileContext 仅删除它找到的每个文件上下文结构的第一个匹配项。 如果每个文件上下文还有其他匹配项,筛选器驱动程序必须调用 FsRtlRemovePerFileContext 任意次数才能删除所有这些上下文。

文件系统筛选器驱动程序必须在删除 FSRTL_PER_FILE_CONTEXT 后释放用于此上下文信息的内存。

将此例程用于驱动程序,仅当驱动程序在文件仍处于打开状态时必须放弃每文件上下文信息时,才删除上下文。 使用 FsRtlTeardownPerFileContexts关闭文件时,将删除上下文。

请勿在 FreeCallback 例程中使用此例程。 在调用该例程之前,文件系统会从列表中删除上下文。

请勿在IRP_CLOSE处理程序中使用此例程。 流被拆毁时,不会收到通知。

要求

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

另请参阅

FSRTL_PER_FILE_CONTEXT

FsRtlGetPerFileContextPointer

FsRtlInsertPerFileContext

FsRtlLookupPerFileContext

在旧文件系统筛选器驱动程序 中跟踪 Per-File 上下文