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
该值指示是否应强制完成,而不考虑引用计数。
如果 ForceFinalize 为 FALSE,则 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 参数设置为 TRUE 和 ForceFinalize 参数,最终完成与此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 |