NET_ROOT 結構

net root 結構NET_ROOT包含網路迷你重新導向器所維護之每個特定網路伺服器\共用連線的資訊。

NET_ROOT是 RDBSS 和網路迷你重新導向器驅動程式想要處理的內容,而不是伺服器。 因此,RDBSS 通常會建立並開啟NET_ROOT結構,並呼叫負責開啟伺服器的網路迷你重新導向器驅動程式。 網路迷你重新導向器驅動程式預期會在傳入的 NET_ROOT 結構中填入適當的欄位。

每個SRV_CALL的 RDBSS 會維護NET_ROOT結構清單。 每個NET_ROOT結構都有一些與其他 RDBSS 結構通用的元素,以及NET_ROOT結構唯一的元素。 管理NET_ROOT結構的 RDBSS 常式只會修改下列元素:

  • 簽章和參考計數

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

  • 相關聯SRV_CALL結構的返回指標

  • 各種子結構的大小資訊

  • 相關聯 FCB 結構的查閱表格

  • 網路迷你重新導向器 (或NET_ROOT資料結構的建立者)

NET_ROOT 結構也包含一份RX_CONTEXT結構清單,這些結構會在繼續 IRP 處理之前等待NET_ROOT轉換完成。 當並行要求導向伺服器時,通常會發生這種情況。 其中一個要求會在其他要求排入佇列時起始。 保留供網路迷你重新導向器使用的額外空間會從已知的NET_ROOT資料結構結尾開始,讓網路迷你重新導向器只要使用包含檔案的內容欄位來參考此額外空間即可。

NET_ROOT 結構的最終處理是由兩個部分所組成:

  1. 終結與所有V_NET_ROOTS的關聯

  2. 釋放記憶體

這兩個動作之間可能會有延遲,而NET_ROOT結構中的欄位可防止第一個步驟重複。