RxPurgeRelatedFobxs 函数 (scavengr.h)

RxPurgeRelatedFobxs 清除与NET_ROOT结构关联的所有 FOBX 结构。

语法

NTSTATUS RxPurgeRelatedFobxs(
  PNET_ROOT   NetRoot,
  PRX_CONTEXT RxContext,
  BOOLEAN     AttemptFinalization,
  PFCB        PurgingFcb
);

参数

NetRoot

指向需要清除 FOBX 结构的NET_ROOT结构的指针。

RxContext

指向RX_CONTEXT结构的指针。

AttemptFinalization

一个布尔值,该值指示是否应尝试完成和释放关联的 FCB 结构。

PurgingFcb

指向应为其执行清除的 FCB 结构的指针。

返回值

RxPurgeRelatedFobxs 返回成功时STATUS_SUCCESS或失败时出现以下错误值之一:

返回代码 说明
STATUS_UNSUCCESSFUL
无法清除任何相关的 FOBX 结构。

注解

在清理时,不再与文件对象关联的用户句柄。 在这种情况下,关闭和清理之间的时间范围由内存管理器和缓存管理器维护的其他引用决定。 在清理时,FOBX 将置于关闭挂起列表中,并在收到关闭操作时从相应的列表中删除。 在此期间,如果打开操作失败并ACCESS_DENIED状态,则 RDBSS 可以强制清除 FOBX 结构。 这是同步操作。

对于目录重命名,需要关闭目录下的所有文件。 网络微型重定向程序可能会调用 RxPurgeRelatedFobxsRxScavengeFobxsForNetRoot ,以响应重命名目录的IRP_MJ_SET_INFORMATION请求。 通过传入目录和 NULL FCB 的NET_ROOT结构,将清除和清理与目录关联的所有 FOBX 结构。

RxPurgeRelatedFobxs 例程尝试清除收到清除请求之前挂起的所有 FOBX 结构。 RxPurgeRelatedFobxs 例程获取 scavenger mutex,遍历 scavenger 对象上的 ClosePendingFobxsList 成员,删除列表条目,然后释放互斥体。

如果 TryFinalize 设置为 TRUE则 RxPurgeRelatedFobxs 将尝试完成并释放关联的 FCB。

如果 PFCB为 NULL,并且此清除 FCB 结构与 ClosePendingFobxsList 成员上 FOBX 关联的 FCB 结构不同,则 RxPurgeRelatedFobxs 将调用网络微型重定向程序提供的 MRxAreFilesAliased 回调例程(如果支持此例程)。 调用 MRxAreFilesAliased 是确定 PFCB 是否是与 FOBX 结构关联的 FCB 的别名。

要求

   
目标平台 桌面
Header scavengr.h (包括 Rxprocs.h)
IRQL <= APC_LEVEL

另请参阅

MRxAreFilesAliased

RxPurgeAllFobxs

RxScavengeAllFobxs

RxScavengeFobxsForNetRoot