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 也會呼叫 RxFinalizeSrvOpen,RecursiveFinalize 設為 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 |