共用方式為


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結構的 NodeReference Count 成員必須是 0,才能完成SRV_OPEN。

傳回值

RxFinalizeSrvOpen 傳回成功 TRUE,如果未進行最終處理,FALSE

言論

RxFinalizeSrvOpen 例程通常不會由網路迷你重新導向器驅動程式直接呼叫。 當 SRV_OPEN參考計數遞減為 1 時,RDBSS 會在內部呼叫此例程。 當呼叫 RxFinalizeNetFcb 例程時,RDBSS 也會呼叫 RxFinalizeSrvOpenRecursiveFinalize 設為 TRUE。 當收到IRP_MJ_CLOSE的 I/O 要求封包時,RDBSS 會呼叫 RxFinalizeNetFcb。 RDBSS 通常會接收此 IRP,以回應要求檔案關閉作業的使用者模式應用程式。 另一個核心驅動程式也有可能發出這類 IRP。

在呼叫 RxFinalizeSrvOpen之前,呼叫端必須在與SRV_OPEN相關聯的 FCB 上取得獨佔鎖定,並在與 FCB 相關聯之NET_ROOT的數據表鎖定上取得共用或獨佔鎖定。

如果 RecursiveFinalize 參數 TRUE,則 RxFinalizeSrvOpen 將會完成與此SRV_OPEN相關聯的任何 FOBX 結構 呼叫 RxFinalizeNetFobx並將 recursiveFinalize 參數設為 TRUE,以及 ForceFinalize 参数。

如果相關聯 FCB 的 FcbState 成員沒有設定FCB_STATE_ORPHANED旗標,則 RxFinalizeSrvCall 會呼叫網路迷你重新導向器所提供的 MRxForceClosed 例程,以完成SRV_CALL。 如果SRV_CALL結構原本未配置為建立FCB的一部分,則也會釋放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 結構