RxFinalizeSrvOpen 函数 (fcb.h)

RxFinalizeSrvOpen 完成给定SRV_OPEN结构。 调用方必须在与SRV_OPEN关联的 FCB 上具有独占锁,并且与 FCB 关联的NET_ROOT的表锁上必须具有共享锁或独占锁。

语法

BOOLEAN RxFinalizeSrvOpen(
  [out] OUT PSRV_OPEN ThisSrvOpen,
  [in]  IN BOOLEAN    RecursiveFinalize,
  [in]  IN BOOLEAN    ForceFinalize
);

参数

[out] ThisSrvOpen

指向要完成的SRV_OPEN结构的指针。

[in] RecursiveFinalize

指示是否应以递归方式完成完成的值。

[in] ForceFinalize

该值指示是否应强制完成,而不考虑引用计数。

如果 ForceFinalizeFALSE,则 ThisSrvOpen 指向的 SRV_OPEN 结构的 NodeReferenceCount 成员必须为 0 才能完成SRV_OPEN。

返回值

RxFinalizeSrvOpen 在成功时返回 TRUE ;如果未完成,则返回 FALSE

注解

网络微型重定向程序驱动程序通常不直接调用 RxFinalizeSrvOpen 例程。 当SRV_OPEN上的引用计数减至 1 时,RDBSS 会在内部调用此例程。 当 RxFinalizeNetFcb 例程在 RecursiveFinalize 设置为 TRUE 的情况下调用 RxFinalizeSrvOpen 时,RDBSS 也会调用 RxFinalizeSrvOpen 当收到 I/O 请求数据包以IRP_MJ_CLOSE时,RDBSS 调用 RxFinalizeNetFcb 。 此 IRP 通常由 RDBSS 接收,以响应请求文件关闭操作的用户模式应用程序。 另一个内核驱动程序也可以发出此类 IRP。

在调用 RxFinalizeSrvOpen 之前,调用方必须在与SRV_OPEN关联的 FCB 上获取独占锁,并在与 FCB 关联的NET_ROOT的表锁上获取共享锁或独占锁。

如果 RecursiveFinalize 参数为 TRUE,则 RxFinalizeSrvOpen 将通过调用 RxFinalizeNetFobx 并将 RecursiveFinalize 参数设置为 TRUEForceFinalize 参数,最终完成与此SRV_OPEN关联的任何 FOBX 结构。

如果关联 FCB 的 FcbState 成员未设置FCB_STATE_ORPHANED标志,则 RxFinalizeSrvCall 将调用网络微型重定向程序提供的 MRxForceClosed 例程,以完成SRV_CALL。 如果最初不是在创建 FCB 时分配SRV_CALL结构,则也会释放SRV_CALL结构的内存。

要求

要求
目标平台 桌面
标头 fcb.h (包括 Mrxfcb.h、Fcb.h)
IRQL <= APC_LEVEL

另请参阅

MRxForceClosed

RxCreateNetFcb

RxCreateNetFobx

RxCreateNetRoot

RxCreateSrvCall

RxCreateSrvOpen

RxCreateVNetRoot

RxDereference

RxFinalizeConnection

RxFinalizeNetFcb

RxFinalizeNetFobx

RxFinalizeNetRoot

RxFinalizeSrvCall

RxFinalizeVNetRoot

RxFinishFcbInitialization

RxForceFinalizeAllVNetRoots

RxReference

RxSetSrvCallDomainName

RxpDereferenceNetFcb

RxpReferenceNetFcb

SRV_OPEN结构