共用方式為


緩衝狀態控制項

RDBSS 提供緩衝管理員,這是一種機制,可搭配各種網路迷你重新導向器來提供分散式快取一致性。 此服務會封裝在 RDBSS 的緩衝管理員中,以處理變更緩衝狀態的要求。 RDBSS 中的緩衝管理員會追蹤和起始各種網路迷你重新導向器和 RDBSS 所產生的所有變更緩衝狀態要求動作。

在一般網路迷你重新導向器中實作快取共通有數個常見元件:

  • 建立和開啟檔案常式的修改。

    在此路徑中,會決定緩衝要求的類型,並對伺服器提出適當的要求。 從網路迷你重新導向器傳回,而且可能是伺服器,會根據建立或開啟呼叫的結果來更新與 FCB 相關聯的緩衝狀態。

  • 修改以接收指示程式碼,以處理來自伺服器的變更緩衝狀態通知。

    如果偵測到這類要求,則必須觸發用來協調緩衝狀態的本機機制。

  • 變更作為 RDBSS 一部分之緩衝狀態的機制。 任何變更緩衝狀態要求都必須識別要求所套用SRV_OPEN結構。

識別SRV_OPEN結構所涉及的計算工作量取決於網路迷你重新導向器的通訊協定和詳細資料。 在 SMB 通訊協定中, (作業鎖定) 提供快取一致性所需的基礎結構。 在 Windows 中的 SMB 通訊協定實作中,會使用 RDBSS 所提供的多工識別碼 API。 伺服器會取得用來識別伺服器上開啟之檔案的多重識別碼。 多工識別碼相對於開啟NET_ROOT (共用) 。 因此,每個變更緩衝狀態要求都會由兩個索引鍵識別:NetRootKey 和 SrvOpenKey,這需要分別轉譯為適當的NET_ROOT和SRV_OPEN結構。 為了提供更好的資源取得/發行機制整合,並避免在各種網路迷你重新導向器中重複此工作,RDBSS 會提供這項服務。

RDBSS 中提供兩個常式,用來指出SRV_OPEN結構的緩衝狀態變更:

請注意,索引鍵關聯是無法復原的,而且會持續關聯SRV_OPEN結構的存留期。

需要輔助機制的網路迷你重新導向器,才能建立從多工識別碼到SRV_OPEN結構的對應,可以使用 RxIndicateChangeOfBufferingState,而不需要此協助的網路迷你重新導向器可以使用 RxIndicateChangeOfBufferingStateForSrvOpen

RDBSS 中的緩衝管理員會在不同的階段處理這些要求。 它會在數個清單中維護從各種基礎網路迷你重新導向器收到的要求。

  • 發送器清單包含尚未建立適當對應至SRV_OPEN結構的所有要求。

  • 處理常式清單包含已建立適當對應的所有要求,但尚未處理。

  • LastChanceHandlerList 包含初始處理失敗的所有要求。 這通常是在收到變更緩衝狀態要求時,在共用模式中取得 FCB 時發生。 在這種情況下,oplock 中斷要求只能由延遲的背景工作執行緒。

網路迷你重新導向器驅動程式中的變更緩衝狀態要求處理會與 FCB 擷取和發行通訊協定交錯。 這有助於確保較短的回合時間。

RDBSS 提供下列常式來管理網路迷你重新導向器驅動程式可以使用的緩衝狀態:

常式傳回的值 描述

RxChangeBufferingState

呼叫此常式來處理緩衝狀態變更要求。

RxIndicateChangeOfBufferingState

此常式稱為註冊緩衝狀態變更要求, (oplock 中斷指示,例如) 以供稍後處理。

RxIndicateChangeOfBufferingStateForSrvOpen

此常式稱為註冊緩衝狀態變更要求, (oplock 中斷指示,例如) 以供稍後處理。