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

另请参阅

MRxFinalizeVNetRoot

RxCreateNetFcb

RxCreateNetFobx

RxCreateNetRoot

RxCreateSrvCall

RxCreateSrvOpen

RxCreateVNetRoot

RxDereference

RxFinalizeConnection

RxFinalizeNetFcb

RxFinalizeNetFobx

RxFinalizeNetRoot

RxFinalizeSrvCall

RxFinalizeSrvOpen

RxFinishFcbInitialization

RxForceFinalizeAllVNetRoots

RxReference

RxSetSrvCallDomainName

RxpDereferenceNetFcb

RxpReferenceNetFcb

V_NET_ROOT结构