共用方式為


篩選管理員概念

篩選管理員 (FltMgr.sys) 是系統提供的內核模式驅動程式,可實作和公開文件系統篩選驅動程式中常用的功能。 檔系統篩選開發人員可以使用 FltMgr 的功能來撰寫 比舊版檔系統篩選驅動程式更簡單的小型篩選 驅動程式。 最終結果是縮短的開發流程和更高質量、更健全的驅動程式。

FltMgr 會隨 Windows 一起安裝,但只有在載入迷你篩選器驅動程式時才會變成作用中。 它會附加至目標磁碟區的檔案系統堆疊。 小型篩選驅動程式會間接附加至文件系統堆疊,方法是向 FltMgr 註冊小型篩選驅動程式選擇篩選的 I/O 作業。

迷你篩選會依特定順序附加。 操作系統會依 載入順序群組和高度來判斷附件的順序。 特定磁碟區上特定高度的小型篩選驅動程式附件稱為 小型篩選驅動程序的實例

小型篩選的高度:

  • 確保小型篩選驅動程序的實例一律會載入相對於其他小型篩選驅動程序實例的適當位置。
  • 決定 FltMgr 呼叫迷你篩選驅動程式來處理 I/O 的順序

下圖顯示具有篩選管理員和三個迷你篩選驅動程序的簡化 I/O 堆疊。

圖表說明使用篩選管理員和三個迷你篩選驅動程序的簡化 I/O 堆棧。

小型篩選驅動程式可以篩選 IRP 型 I/O 作業,以及快速 I/O 和檔案系統篩選器 (FSFilter) 回呼作業。 針對它選擇篩選的每個 I/O 作業,迷你篩選程式可以註冊 預先操作回呼例程、後續操作回呼例程或兩者。 當 FltMgr 處理 I/O 作業時,它會針對註冊該作業的每個迷你篩選驅動程式呼叫適當的回呼例程。 當該回呼例程傳回時, FltMgr 會針對為作業註冊的下一個小型篩選驅動程式呼叫適當的回呼例程。

例如,假設此圖中的所有三個迷你篩選驅動程式都已註冊相同的 I/O 作業。 在此情況下:

  • 當 FltMgr 收到 I/O 作業時,它會呼叫迷你篩選預先操作回呼例程,其高度從最高到最低(A、B、C)。 FltMgr 接著會將 I/O 要求轉送至下一個較低的驅動程式,以便進一步處理。
  • FltMgr 收到完成的 I/O 要求時,它會以反向順序呼叫每個迷你篩選驅動程式的後置回呼例程,從最低到最高(C、B、A)。

為了與舊版篩選驅動程式的互操作性, FltMgr 可以將篩選裝置物件附加至多個位置的文件系統 I/O 堆棧。 FltMgr 的每個篩選裝置對象稱為框架。 從舊版篩選驅動程序的觀點來看,每個篩選管理員框架只是另一個舊版篩選驅動程式。

每個篩選管理員框架都代表高度範圍。 FlgMgr 可以調整現有的框架或建立新的框架,以允許小型篩選驅動程式附加在正確的位置。

FltMgr 無法在兩個附加的舊版篩選之間附加迷你篩選,除非它們之間已經有篩選管理員框架。 如果迷你篩選是要附加在舊版篩選之上,則可以根據第二個附加的舊版篩選條件存在,將其附加在它下方。 要附加在舊版篩選之下的迷你篩選,可以改為附加在該舊版篩選之上。

重要

請一律使用小型篩選來驗證舊版篩選的互操作性,或考慮使用小型篩選來取代舊版篩選。 如需詳細資訊,請參閱 移植舊版篩選驅動程式的指導方針。

如果卸除並重載迷你篩選驅動程式,系統會在卸除的相同框架中,以相同的高度重載它。

下圖顯示具有兩個篩選管理員框架、迷你篩選驅動程序實例和舊版篩選驅動程式的簡化 I/O 堆棧。

圖表說明簡化的 I/O 堆疊,其中包含兩個篩選管理員框架、迷你篩選驅動程序實例和舊版篩選驅動程式。