共用方式為


連線和檔案結構管理

RDBSS 使用六個基本資料結構來管理連線和檔案結構。 RDBSS 和各種網路迷你重新導向器會在內部使用這些資料結構。 這些資料結構有兩個版本。 網路迷你重新導向器版本包含可由網路迷你重新導向器驅動程式操作的欄位。 這些資料結構的網路迷你重新導向器版本會以 MRX_ 前置詞開頭。 RDBSS 版本包含其他欄位,只能由 RDBSS 操作。

這六個基本資料結構如下所示:

  • SRV_CALL--server 呼叫內容。 此結構提供遠端伺服器的抽象概念。

  • NET_ROOT--net root。 這個結構會抽象化共用的連接。

  • V_NET_ROOT檢視 (也稱為虛擬 netroots) 。

  • FCB--file 控制區塊。 這個結構代表共用上的開啟檔案。

  • SRV_OPEN--伺服器端開啟內容。 此結構會在伺服器上封裝開啟的控制碼。

  • FOBX--file 物件副檔名。 此結構是 FILE_OBJECT 結構的 RDBSS 延伸模組。

這些資料結構會組織在下列階層中:

                SRV_CALL 
     FCB   <------> NET_ROOT
        SRV_OPEN  <---> V_NET_ROOT
            FOBX
                FILE_OBJECT

為了回應核心檔案系統呼叫,RDBSS 通常會為網路迷你重新導向器驅動程式建立和完成所有先前提及的結構,但 FOBX 結構除外。 因此,網路迷你重新導向器驅動程式通常只會呼叫一些用於連線和檔案結構管理的 RDBSS 常式。 大部分的常式都是由 RDBSS 在內部呼叫。

所有這些資料結構都會計算參考計數。 資料結構的參考計數如下:

資料結構 參考計數的描述

SRV_CALL

指向SRV_CALL的NET_ROOT專案數目,加上一些動態值。

NET_ROOT

指向NET_ROOT的 FCB 專案和V_NET_ROOT專案數目,加上一些動態值。

V_NET_ROOT

指向V_NET_ROOT的SRV_OPEN專案數目,加上一些動態值。

FCB

指向 FCB 的SRV_OPEN專案數目,加上一些動態值。

SRV_OPEN

指向 SRV_OPEN 的 FOBX 專案數目,加上一些動態值。

FOBX

某些動態值。

在每個案例中,動態值都會參考已參考結構的呼叫端數目,而不需要取值。 參考計數的靜態部分是由常式本身維護。 例如, RxCreateNetRoot 會遞增相關聯SRV_CALL結構的參考計數。

參考呼叫和成功的查閱會遞增參考計數;dereference 呼叫會遞減計數。 建立常式呼叫會配置結構,並將參考計數設定為 1。

與任何資料結構相關聯的參考計數至少為 1,再加上與它相關聯下一個較低層級的資料結構實例數目。 例如,與SRV_CALL相關聯的參考計數,其有兩個NET_ROOTs關聯,至少為 3。 除了 RDBSS 內部 NameTable 結構所持有的參考,以及下一個較低層級的資料結構之外,還可能會取得其他參考。

這些限制可確保任何指定層級的資料結構都無法完成 (釋放,且相關聯的記憶體區塊會釋放) ,直到下一個層級的所有資料結構都已完成或已釋放其參考為止。 例如,如果保留 FCB 的參考,則可以安全地存取與其相關聯的V_NET_ROOT、NET_ROOT和SRV_CALL結構。

網路迷你重新導向器和 RDBSS 之間介面中使用的兩個重要抽象概念是SRV_CALL和NET_ROOT結構。 SRV_CALL結構會對應至與已建立連接之伺服器相關聯的內容,而NET_ROOT結構對應至伺服器上的共用, (也可以檢視為命名空間的一部分,網路迷你重新導向器) 宣告此部分。

建立SRV_CALL和NET_ROOT結構通常牽涉到至少一個網路來回行程。 為了提供非同步作業以繼續,這些作業會模型化為兩階段活動。 建立SRV_CALL的網路迷你重新導向器,且NET_ROOT結構的每個呼叫都會伴隨從網路迷你重新導向器到 RDBSS 的呼叫,以通知要求的完成狀態。 目前這些是同步的。

建立SRV_CALL結構會進一步複雜,因為 RDBSS 必須從數個網路迷你重新導向器中選擇,才能建立與伺服器的連線。 為了提供 RDBSS 在選擇想要部署的網路迷你重新導向器時的最大彈性,建立SRV_CALL結構牽涉到 RDBSS 通知成功者網路迷你重新導向器的第三個階段。 所有遺失的網路迷你重新導向器都會終結相關聯的內容。

本節包含下列主題:

SRV_CALL 結構

NET_ROOT 結構

V_NET_ROOT 結構

FCB 結構

SRV_OPEN 結構

FOBX 結構

連線和檔案結構鎖定

連線和檔案控制區塊管理常式