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

注解

网络微型重定向程序驱动程序通常不会直接调用 RxFinalizeVNetRoot 例程。 当V_NET_ROOT的引用计数递减到 1 时,RDBSS 会在内部调用此例程。

如果将 RxFinalizeConnectionLevel 参数设置为 TRUE,则 RxFinalizeConnection 例程也会调用 RxFinalizeVNetRootRxFinalizeConnection 通常由网络微型重定向程序驱动程序调用,以响应从用户模式接收自定义 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

另请参阅

MRxFinalizeVNetRoot

RxCreateNetFcb

RxCreateNetFobx

RxCreateNetRoot

RxCreateSrvCall

RxCreateSrvOpen

RxCreateVNetRoot

RxDereference

RxFinalizeConnection

RxFinalizeNetFcb

RxFinalizeNetFobx

RxFinalizeNetRoot

RxFinalizeSrvCall

RxFinalizeSrvOpen

RxFinishFcbInitialization

RxForceFinalizeAllVNetRoots

RxReference

RxSetSrvCallDomainName

RxpDereferenceNetFcb

RxpReferenceNetFcb

V_NET_ROOT 结构