共用方式為


名稱快取管理

NAME_CACHE結構會快取伺服器上執行之最近作業的名稱字串,讓用戶端可以隱藏備援要求。 例如,如果開啟要求最近失敗,並出現「找不到檔案」訊息,而用戶端應用程式會以大寫字串再次嘗試開啟要求,而網路迷你重新導向器不支援區分大小寫的名稱,RDBSS 就會立即失敗要求,而不需要按下伺服器。

一般而言,演算法是在NAME_CACHE專案上放置時間範圍和作業計數限制。 時間範圍通常是兩秒。 因此,如果NAME_CACHE專案大於兩秒,則比對將會失敗,而且要求會移至伺服器。 如果要求在伺服器上再次失敗,NAME_CACHE專案會以另一個兩秒的視窗更新。 如果要求作業計數不符,則一或多個要求已傳送至伺服器,這可能會使此NAME_CACHE專案無效。 因此,此作業會再次傳送至伺服器。

NAME_CACHE 結構具有公開給網路迷你重新導向器、MRX_NAME_CACHE和私人區段的公用部分,僅供 RDBSS 使用。 迷你重新導向器部分具有內容欄位 NTSTATUS,用於此名稱專案上先前的伺服器作業結果,以及一些可與NAME_CACHE結構共同配置的其他迷你重新導向器特定儲存體的內容延伸指標。 如需詳細資訊,請參閱 RxNameCacheInitialize

對於 Windows 網路,SMB 作業計數是迷你重新導向器特定狀態的範例,可以儲存在MRX_NAME_CACHE的內容欄位中。 呼叫 RxNameCacheCheckEntry 時,它會在內容欄位與提供的參數之間執行相等檢查,作為在名稱快取中尋找相符專案的一部分。 建立或更新NAME_CACHE專案時,它是網路迷你重新導向器的工作,為NAME_CACHE專案提供適當的值給此欄位和存留期,以秒為單位。

NAME_CACHE 結構的私人 RDBSS 部分包含名稱做為 Unicode 字串、名稱的雜湊值,以加速查閱、專案的到期時間,以及指出伺服器是否支援區分大小寫名稱的旗標。

NAME_CACHE_CONTROL結構會管理指定的名稱快取。 它有免費清單、使用中清單,以及同步處理更新的鎖定。 NAME_CACHE_CONTROL 結構也有欄位可儲存目前配置的NAME_CACHE專案數目、要設定項目數上限的值、用於每個NAME_CACHE專案的任何其他網路迷你重新導向器儲存體大小,以及統計資料的值 (快取更新、核取次數、 傳回有效的相符專案,以及當網路迷你重新導向器儲存網路作業) 時。 MaximumEntries欄位會限制建立的NAME_CACHE專案數目,以防行為不佳的程式產生大量的開啟要求,而檔案名會耗用大量記憶體。

目前有 RDBSS 針對OBJECT_NAME_NOT_FOUND維護的名稱快取。 針對此名稱快取,會維護兩秒的視窗,如果有任何作業傳送至伺服器,就會失效。 當用戶端應用程式的檔案 (sample1) 開啟時,當伺服器上應用程式可用來發出在伺服器上建立不同檔案 (sample2) 訊號時,就會發生這種情況。 當用戶端讀取 sample1 (sample1) 的第一個檔案,並瞭解已在伺服器上建立第二個檔案 (sample2) ,則名稱快取中符合第二個檔案 (sample2) 無法傳回錯誤。 此優化只會處理相同檔案上尚未存在的連續檔案開啟作業案例。 此案例會使用 Microsoft Word。

RDBSS 名稱快取管理常式包括下列各項:

常式傳回的值 描述

RxNameCacheActivateEntry

此常式會採用名稱快取專案,並更新到期時間和網路迷你重新導向器內容。 然後,它會將專案放在使用中清單。

RxNameCacheCheckEntry

此常式會檢查NAME_CACHE專案是否有效。

RxNameCacheCreateEntry

這個常式會使用指定的名稱字串來配置和初始化NAME_CACHE結構。 接著,呼叫端會初始化名稱快取內容的任何其他網路迷你重新導向器元素,然後將專案放在名稱快取使用中清單。

RxNameCacheExpireEntry

此常式會將NAME_CACHE專案放在免費清單上。

RxNameCacheExpireEntryWithShortName

此常式會讓名稱前置詞符合指定簡短檔案名的所有NAME_CACHE專案到期。

RxNameCacheFetchEntry

此常式會尋找符合NAME_CACHE專案的指定名稱字串。

RxNameCacheFinalize

這個常式會釋放與NAME_CACHE_CONTROL結構相關聯之所有NAME_CACHE專案的儲存體。

RxNameCacheFreeEntry

這個常式會釋放NAME_CACHE專案的儲存體,並遞減與NAME_CACHE_CONTROL結構相關聯的NAME_CACHE快取專案計數。

RxNameCacheInitialize

這個常式會在) NAME_CACHE_CONTROL結構 (初始化名稱快取。