FCB 結構

檔案控制項區塊 (FCB) 結構是由檔案物件中的 FsCoNtext 欄位所指向。 共用 FCB 的所有作業都會參考相同的檔案。 不幸的是,SMB 伺服器目前實作的方式是名稱可以是別名,因此兩個不同的名稱可以是相同的檔案。 FCB 是檔案作業的焦點。 由於相同 FCB 上的作業實際上位於相同的檔案上,因此同步處理是以 FCB 為基礎,而不是某些較高層級的物件。

每當建立 FCB 結構時,也會建立對應的SRV_OPEN和 FOBX 結構。 多個SRV_OPEN結構可以與指定的 FCB 結構相關聯,而且多個 FOBX 結構與指定的SRV_OPEN結構相關聯。 在大部分情況下,其中一個SRV_OPEN結構與 FCB 相關聯,而與指定SRV_OPEN結構相關聯的 FOBX 結構數目為 1。 為了在這類情況下改善空間位置和分頁行為,FCB 結構的配置也牽涉到一個相關聯的SRV_OPEN和 FOBX 結構的配置。

RDBSS 會嘗試在記憶體中配置相關聯的 FCB、SRV_OPEN和 FOBX 結構,以改善分頁行為。 RDBSS 不會將 FCB 和NET_ROOT結構配置在一起,因為不會分頁NET_ROOT結構,但 FCB 結構通常會分頁 (,除非它們是分頁檔案) 。

FCB 結構會對應至每個開啟的檔案和目錄。 FCB 結構分成下列兩個部分:

  • 配置在非分頁集區中的非分頁元件

  • 分頁元件

前者是NON_PAGED_FCB,而稍後稱為 FCB。

FCB 包含對應NON_PAGED_FCB元件的指標。 回點器會從NON_PAGED_FCB維護到 FCB,以供檢查的組建進行偵錯。

NON_PAGED_FCB包含記憶體管理員和快取管理員用來操作區段物件的特殊指標結構。 請注意,這些指標的值通常會設定在檔案系統外部。

FCB 結構包含下列專案:

  • FSRTL_COMMON_HEADER 結構

  • 簽章和參考計數

  • 名稱和相關聯的資料表資訊

  • 相關聯NET_ROOT結構的後端點

  • 相關聯的SRV_OPEN結構清單

  • 裝置物件

  • 網路迷你重新導向器或 FCB 結構的建立者所要求的任何其他儲存體