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 结构。 这是一个同步作。
对于目录重命名,需要关闭目录下的所有文件。 因此,网络微型重定向程序可能会调用 RxPurgeRelatedFobxs 和 RxScavengeFobxsForNetRoot,以响应IRP_MJ_SET_INFORMATION请求重命名目录。 通过传入目录的NET_ROOT结构以及 NULL FCB,将清除和清理与目录关联的所有 FOBX 结构。
RxScavengeFobxsForNetRoot 例程获取复仇者互斥体,遍历 FobxsToBeFinalized scavenger 对象的列表成员,并添加在 ScavengerFinalizationList 成员的尾部的任何条目,然后释放互斥体。
如果 PurgingFcb 未 NULL,并且此清除 FCB 结构与 FobxsToBeFinalized 列表成员的 FOB 不同, RxScavengeFobxsForNetRoot 将调用网络微型重定向程序提供的 MRxAreFilesAliased 回调例程(如果支持)。 调用 MRxAreFilesAliased 是确定 PFCB 是否是与 FOBX 结构关联的 FCB 的别名。
在检查的生成中,RxScavengeAllFobxs 会导致系统在以下情况下为 ASSERT:
- FOBX 结构的 NodeTypeCode 成员不RDBSS_NTC_FOBX。
要求
要求 | 价值 |
---|---|
目标平台 | 桌面 |
标头 | scavengr.h (include Rxprocs.h) |
IRQL | <= APC_LEVEL |