RxScavengeFobxsForNetRoot 函数 (scavengr.h)

RxScavengeFobxsForNetRoot 清除与给定NET_ROOT结构关联的所有 FOBX 结构。

语法

void RxScavengeFobxsForNetRoot(
  PNET_ROOT NetRoot,
  PFCB      PurgingFcb,
  BOOLEAN   SynchronizeWithScavenger
);

参数

NetRoot

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

PurgingFcb

指向应进行清理的 FCB 的指针。

SynchronizeWithScavenger

一个布尔值,指定此例程是否应与寻道器同步。

返回值

备注

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

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

RxScavengeFobxsForNetRoot 例程获取 scavenger 互斥体,遍历 scavenger 对象的 FobxsToBeFinalized 列表成员,并将找到的任何条目添加到 scavenger 对象的 ScavengerFinalizationList 成员的尾部,然后释放互斥体。

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

在检查的生成中, RxScavengeAllFobxs 导致系统针对以下条件执行 ASSERT:

  • FOBX 结构的 NodeTypeCode 成员不是RDBSS_NTC_FOBX。

要求

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

另请参阅

MRxAreFilesAliased

RxPurgeAllFobxs

RxPurgeRelatedFobxs

RxScavengeAllFobxs