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请求。 通过传入目录的 NET_ROOT 结构和 NULL FCB,将清除和清理与目录关联的所有 FOBX 结构。

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

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

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

要求

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

另请参阅

MRxAreFilesAliased

RxPurgeAllFobxs

RxScavengeAllFobxs

RxScavengeFobxsForNetRoot