檔系統篩選載入順序
Windows 作業系統會根據下列專案載入檔案系統篩選驅動程式:
- 驅動程式的啟動類型,其中每個啟動類型都代表開機系統的階段。
- 在系統啟動時載入之檔案系統篩選驅動程式的載入順序群組。 迷你篩選驅動程式需要載入順序群組的概念,才能與 舊版文件系統篩選驅動程式的互操作性。 您可以隨時載入 ninifilter 驅動程式。
在探索檔系統篩選驅動程式在系統開機順序期間載入的時機和方式之前,必須先了解驅動程式啟動類型和載入順序群組。
驅動程式啟動類型
內核模式驅動程式的 啟動類型 會指定要在系統啟動期間或之後載入驅動程式。 有五種可能的開始類型:
開始類型 | 描述 |
---|---|
SERVICE_BOOT_START(0x00000000) | 指出作業系統 (OS) 載入器啟動的驅動程式。 檔案系統篩選驅動程式通常會使用此啟動類型或SERVICE_DEMAND_START。 舊版檔案系統篩選必須使用此啟動類型。 如需詳細資訊,請參閱 文件系統篩選載入順序群組。 |
SERVICE_SYSTEM_START (0x00000001) | 表示在OS初始化期間啟動的驅動程式。 檔案系統辨識器會使用此啟動類型。 除了 「SERVICE_DISABLED」 中列出的檔案系統以外,檔案系統(包括網路檔案系統元件)通常會使用此啟動類型或SERVICE_DEMAND_START。 此啟動類型也會由在系統初始化期間列舉但不需要載入系統的 PnP 裝置使用。 |
SERVICE_AUTO_START (0x00000002) | 表示服務控制管理員在系統啟動期間啟動的驅動程式。 很少使用。 |
SERVICE_DEMAND_START (0x00000003) | 指出驅動程式已依需求啟動,可能是由 PnP 管理員(適用於設備驅動器),或由服務控制管理員啟動(適用於檔案系統和文件系統篩選驅動程式)。 |
SERVICE_DISABLED (0x00000004) | 指出操作系統載入器、服務控制管理員或 PnP 管理員未啟動的驅動程式。 由文件系統辨識器載入的檔案系統使用(除非它們是開機文件系統),或是EFS的另一個文件系統。 這類文件系統包括CDFS、EFS、FastFat、NTFS和UDFS。 也用來在偵錯期間暫時停用驅動程式。 |
指定啟動類型的所有驅動程式都會先載入SERVICE_BOOT_START,再載入具有啟動類型為 SERVICE_SYSTEM_START 或 SERVICE_AUTO_START的驅動程式。 在每個開始類型類別內,載入順序群組會決定何時載入檔案系統篩選驅動程式(和舊版篩選驅動程式)。
指定開始類型
驅動程式寫入器可以在安裝時間指定驅動程式的啟動類型,有下列其中一種方式:
藉由指定驅動程式 INF 檔案中 AddService 指示詞所參照 service-install-section 中 StartType 專案所需的啟動類型。 此方法會在建立篩選驅動程式的 INF 檔案的 ServiceInstall 區段中說明。
從使用者模式安裝程式呼叫 CreateService 或 ChangeServiceConfig 時,傳遞 dwStartType 參數所需的啟動類型。 此方法會在 Microsoft Windows SDK 檔中的 CreateService 和 ChangeServiceConfig 參考專案中說明。
驅動程式載入訂單群組
在SERVICE_BOOT_START和SERVICE_SYSTEM_START開始類型內,每個驅動程式的載入順序群組都會指定驅動程式的相對順序。
啟動類型為SERVICE_BOOT_START的驅動程式稱為 開機(或開機啟動)驅動程式。 開機驅動程式的篩選條件通常屬於其中一個 FSFilter 載入順序群組。 這些載入順序群組會在文件系統篩選驅動程式的載入順序群組中詳細說明。
其啟動類型為SERVICE_SYSTEM_START的驅動程式也會依其所屬的載入順序群組順序載入。 不過,在載入所有開機驅動程式之前,不會載入任何系統啟動驅動程式。
啟動類型為SERVICE_AUTO_START、SERVICE_DEMAND_START或SERVICE_DISABLED的驅動程式,會忽略載入順序群組。
您可以在 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control 登錄機碼的 ServiceGroupOrder 子機碼下找到載入順序群組的完整排序列表。
相同的載入群組順序用於SERVICE_BOOT_START和SERVICE_SYSTEM_START驅動程式。 不過,所有SERVICE_BOOT_START驅動程式都會載入並啟動,再載入任何SERVICE_SYSTEM_START驅動程式。
指定載入順序群組
驅動程式寫入器可以在安裝時間指定驅動程式的載入順序群組,方式如下:
藉由指定驅動程式 INF 檔案中 AddService 指示詞所參照 service-install-section 中 LoadOrderGroup 專案所需的載入順序群組。 這個方法會在建立篩選驅動程式的 INF 檔案的 ServiceInstall 區段中說明。
從使用者模式安裝程式呼叫 CreateService 或 ChangeServiceConfig 時,傳遞 lpLoadOrderGroup 參數所需的啟動類型。 此方法會在 Microsoft Windows SDK 檔中的 CreateService 和 ChangeServiceConfig 參考專案中說明。
如需驅動程式載入順序和載入順序群組的詳細資訊,請參閱 指定驅動程式載入順序。
載入篩選驅動程序的規則
下列有關啟動類型和載入順序群組的規則會決定何時載入篩選驅動程式:
指定特定開始類型和載入順序群組的篩選驅動程式會與該開始類型和載入順序群組中的所有其他篩選驅動程式同時載入。
在每個載入順序群組內,小型篩選和舊版篩選驅動程式通常會以隨機順序載入。 此案例通常會根據驅動程式安裝的順序載入驅動程式。
如果迷你篩選或舊版篩選驅動程式未指定載入順序群組,則會載入相同啟動類型的其他所有驅動程式,以指定載入順序群組。