RxFinalizeVNetRoot 函数 (fcb.h)
RxFinalizeVNetRoot 完成给定的V_NET_ROOT结构。 调用方必须在与设备对象关联的 netname 表上具有排他锁。
语法
BOOLEAN RxFinalizeVNetRoot(
[out] OUT PV_NET_ROOT ThisVNetRoot,
[in] IN BOOLEAN RecursiveFinalize,
[in] IN BOOLEAN ForceFinalize
);
参数
[out] ThisVNetRoot
指向要完成的V_NET_ROOT结构的指针。
[in] RecursiveFinalize
指示是否应以递归方式完成最终化的值。 此参数当前未使用。
[in] ForceFinalize
指示是否应强制进行最终化的值,而不考虑引用计数。
如果 ForceFinalizeFALSE,则 ThisVNetRoot 指向的V_NET_ROOT结构的 NodeReferenceCount 成员必须为 1 才能完成V_NET_ROOT。
返回值
RxFinalizeVNetRoot 在成功时返回 TRUE;如果未进行最终确定,则返回 false FALSE:
言论
RxFinalizeVNetRoot 例程通常不是由网络微型重定向程序驱动程序直接调用的。 RDBSS 在V_NET_ROOT上的引用计数递减为 1 时,在内部调用此例程。
如果 Level 参数 设置为 RxFinalizeConnection 设置为 true,则 RxFinalizeVNetRootRxFinalizeVNetRoot 例程也会调用。 RxFinalizeConnection 通常由网络微型重定向程序驱动程序调用,以响应从用户模式接收自定义 IOCTL 请求。 例如,用户可以从命令行执行“NET USE x: /d”以删除共享。 此请求将通过网络微型重定向程序提供的网络提供程序 DLL 映射到发送到网络微型重定向程序内核驱动程序的自定义 IOCTL 请求,该请求将调用 RxFinalizeConnection 例程来删除连接和任何关联的V_NET_ROOT结构。
RxFinalizeVNetRoot 也由 RxForceFinalizeAllVNetRoots 例程调用,以完成与NET_ROOT结构关联的每个V_NET_ROOT。
在调用 RxFinalizeVNetRoot之前,必须以独占模式获取与设备对象关联的 netname 表上的锁。
如果V_NET_ROOT的 UpperFinalization 成员为 0,则 RxFinalizeVNetRoot 将循环访问与此V_NET_ROOT关联的NET_ROOT的所有 FDB,并孤立与V_NET_ROOT关联的所有SRV_OPEN结构。
RxFinalizeVNetRoot 将调用网络微型重定向程序提供的 MRxFinalizeVNetRoot 例程,以便在释放V_NET_ROOT结构的内存之前完成V_NET_ROOT。
要求
要求 | 价值 |
---|---|
目标平台 | 桌面 |
标头 | fcb.h (包括 Mrxfcb.h、Fcb.h) |
IRQL | <= APC_LEVEL |