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 例程時,RDBSS 也會呼叫 RxFinalizeSrvOpen,並將 RecursiveFinalize 設定為 TRUE。 當收到 I/O 要求封包以供IRP_MJ_CLOSE時,RDBSS 會呼叫 RxFinalizeNetFcb 。 RDBSS 通常會收到此 IRP,以回應要求檔案關閉作業的使用者模式應用程式。 另一個核心驅動程式也可以發出這類 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。 如果SRV_CALL結構原本未配置為建立FCB的一部分,則也會釋放SRV_CALL結構的記憶體。
規格需求
需求 | 值 |
---|---|
目標平台 | 桌面 |
標頭 | fcb.h (包括 Mrxfcb.h、Fcb.h) |
IRQL | <= APC_LEVEL |