次の方法で共有


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

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 ローダー、Service Control Manager、または 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 ドライバーは、 ブート (またはブートスタート) ドライバー と呼ばれます。 Microsoft Windows 2000 以前のシステムでは、ブート ドライバーであるほとんどのフィルターが "フィルター" グループに属しています。 Microsoft Windows XP 以降のシステムでは、ブート ドライバーであるフィルターは、通常、FSFilter 読み込み順序グループのいずれかに属します。 これらの読み込み順序グループの詳細 については、 「ファイル システム フィルター ドライバーの読み込み順序グループ」 を参照してください。

開始の種類が SERVICE_SYSTEM_START ドライバーは、それらが属している読み込み順序グループの順序で読み込まれます。 ただし、すべてのブート ドライバーが読み込まれるまで、システム起動ドライバーは読み込まれません。

Note

読み込み順序グループは、開始の種類が 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 のリファレンス エントリで説明されています。

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

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

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

  • 特定の開始の種類と読み込み順序グループを指定するフィルター ドライバーは、その開始の種類と読み込み順序グループ内の他のファイル システム フィルター ドライバーとレガシ フィルター ドライバーと同時に読み込まれます。
  • 各読み込み順序グループ内では、通常、ファイル システム フィルター ドライバーとレガシ ドライバーがランダムな順序で読み込まれます。 これにより、通常、ドライバーがインストールされた順序に基づいてドライバーが読み込まれます。
  • ファイル システム フィルター ドライバーまたはレガシ フィルター ドライバーが読み込み順序グループを指定しない場合は、読み込み順序グループを指定する同じ開始の種類の他のすべてのドライバーの後に読み込まれます。