次の方法で共有


ファイル システム フィルターの読み込み順序

Windows オペレーティング システムは、次に基づいてファイル システム フィルター ドライバーを読み込みます。

  • ドライバーの開始の種類。各開始の種類は、システムを起動するフェーズを表します。
  • システムの起動時に読み込まれるファイル システム フィルター ドライバーの読み込み順序グループ。 ミニフィルター ドライバーには、レガシ ファイル システム フィルター ドライバーとの相互運用性のための読み込み順序グループの概念が必要です。 ミニフィルター ドライバーはいつでも読み込むことができます。

システムのブート シーケンス中にファイル システム フィルター ドライバーがいつどのように読み込まれるかを調べる前に、ドライバーの開始の種類と読み込み順序グループを理解しておく必要があります。

ドライバーの開始の種類

カーネル モード ドライバーの 開始の種類 は、システムの起動中または起動後にドライバーを読み込むかどうかを指定します。 可能な開始の種類は 5 つあります。

開始の種類 説明
SERVICE_BOOT_START (0x00000000) オペレーティング システム (OS) ローダーによって開始されたドライバーを示します。 ファイル システム フィルター ドライバーは、通常、この開始の種類または SERVICE_DEMAND_START を使用します。 レガシ ファイル システム フィルターでは、この開始の種類を使用する必要があります。 詳細については、「ファイル システム フィルターの読み込み順序グループ」を参照してください。
SERVICE_SYSTEM_START (0x00000001) OS の初期化中に開始されたドライバーを示します。 この開始の種類は、ファイル システム認識エンジンによって使用されます。 "SERVICE_DISABLED" に一覧表示されているファイル システムを除き、ファイル システム (ネットワーク ファイル システム コンポーネントを含む) では通常、この開始の種類または SERVICE_DEMAND_START を使用します。 この開始の種類は、システムの初期化中に列挙されるが、システムを読み込む必要がない PnP デバイスのデバイス ドライバーでも使用されます。
SERVICE_AUTO_START (0x00000002) システムの起動時に Service Control Manager によって起動されたドライバーを示します。 めったに使用されません。
SERVICE_DEMAND_START (0x00000003) PnP マネージャー (デバイス ドライバーの場合) または Service Control Manager (ファイル システムおよびファイル システム フィルター ドライバーの場合) によって、ドライバーがオンデマンドで開始されたことを示します。
SERVICE_DISABLED (0x00000004) OS ローダー、サービス コントロール マネージャー、または PnP マネージャーで開始されていないドライバーを示します。 ファイル システム認識エンジンによって読み込まれるファイル システム (ブート ファイル システムの場合を除く) または EFS 向けの別のファイル システムによって使用されます。 このようなファイル システムには、CDFS、EFS、FastFat、NTFS、UDFS が含まれます。 また、デバッグ中にドライバーを一時的に無効にするためにも使用されます。

SERVICE_BOOT_START の開始の種類を指定するすべてのドライバーは、SERVICE_SYSTEM_START または SERVICE_AUTO_START の開始の種類を持つドライバーの前に読み込まれます。 各開始の種類のカテゴリ内で、読み込み順序グループは、ファイル システム フィルター ドライバー (およびレガシ フィルター ドライバー) が読み込まれるタイミングを決定します。

開始の種類の指定

ドライバー ライターは、次のいずれかの方法で、インストール時にドライバーの開始の種類を指定できます。

  • ドライバーの INF ファイルの AddService ディレクティブによって参照される service-install-sectionStartType エントリに必要な開始の種類を指定します。 このメソッドについては フィルター ドライバーの INF ファイルを作成するServiceInstall セクションで説明されています。

  • ユーザー モードのインストール プログラムから CreateService または ChangeServiceConfig を呼び出すときに、 dwStartType パラメーターに必要な開始の種類を渡します。 このメソッドについては、Microsoft Windows SDK ドキュメントの CreateServiceChangeServiceConfig のリファレンス エントリで説明されています。

ドライバーの読み込み順序グループ

SERVICE_BOOT_START および SERVICE_SYSTEM_START の開始の種類内では、各ドライバーの読み込み順序グループによって、ドライバーの相対的な順序が指定されます。

開始の種類が SERVICE_BOOT_START ドライバーは、 ブート (またはブートスタート) ドライバー と呼ばれます。 ブート ドライバーであるフィルターは、通常、FSFilter 読み込み順序グループの 1 つに属します。 これらの読み込み順序グループの詳細 については、 「ファイル システム フィルター ドライバーの読み込み順序グループ」 を参照してください。

開始の種類が 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-sectionLoadOrderGroup エントリに必要な読み込み順序の種類を指定します。 このメソッドについては フィルター ドライバーの INF ファイルを作成するServiceInstall セクションで説明されています。

  • ユーザー モードのインストール プログラムから CreateService または ChangeServiceConfig を呼び出すときに、 lpLoadOrderGroup パラメーターに必要な開始の種類を渡します。 このメソッドについては、Microsoft Windows SDK ドキュメントの CreateServiceChangeServiceConfig のリファレンス エントリで説明されています。

ドライバーの読み込み順序と読み込み順序グループの一般的な情報については、 「ドライバーの読み込み順序の指定」 を参照してください。

フィルター ドライバーを読み込むための規則

開始の種類と読み込み順序グループに関する次の規則は、フィルター ドライバーが読み込まれるタイミングを決定します。

  • 特定の開始の種類と読み込み順序グループを指定するフィルター ドライバーは、その開始の種類と読み込み順序グループ内のすべてのその他フィルター ドライバーと同時に読み込まれます。

  • 各読み込み順序グループ内では、通常、ミニフィルター ドライバーとレガシ フィルター ドライバーがランダムな順序で読み込まれます。 この場合は通常、ドライバーがインストールされた順序に基づいてドライバーが読み込まれます。

  • ミニフィルター ドライバーまたはレガシ フィルター ドライバーで読み込み順序グループが指定されない場合は、読み込み順序グループを指定する同じ開始の種類の他のすべてのドライバーの後に読み込まれます。