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