ファイル システム フィルターの読み込み順序
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-section の StartType エントリに必要な開始の種類を指定します。 このメソッドについては フィルター ドライバーの INF ファイルを作成する の ServiceInstall セクションで説明されています。
ユーザー モードのインストール プログラムから CreateService または ChangeServiceConfig を呼び出すときに、 dwStartType パラメーターに必要な開始の種類を渡します。 このメソッドについては、Microsoft Windows SDK ドキュメントの CreateService と ChangeServiceConfig のリファレンス エントリで説明されています。
ドライバーの読み込み順序グループ
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-section の LoadOrderGroup エントリに必要な読み込み順序の種類を指定します。 このメソッドについては フィルター ドライバーの INF ファイルを作成する の ServiceInstall セクションで説明されています。
ユーザー モードのインストール プログラムから CreateService または ChangeServiceConfig を呼び出すときに、 lpLoadOrderGroup パラメーターに必要な開始の種類を渡します。 このメソッドについては、Microsoft Windows SDK ドキュメントの CreateService と ChangeServiceConfig のリファレンス エントリで説明されています。
ドライバーの読み込み順序と読み込み順序グループの一般的な情報については、 「ドライバーの読み込み順序の指定」 を参照してください。
フィルター ドライバーを読み込むための規則
開始の種類と読み込み順序グループに関する次の規則は、フィルター ドライバーが読み込まれるタイミングを決定します。
特定の開始の種類と読み込み順序グループを指定するフィルター ドライバーは、その開始の種類と読み込み順序グループ内のすべてのその他フィルター ドライバーと同時に読み込まれます。
各読み込み順序グループ内では、通常、ミニフィルター ドライバーとレガシ フィルター ドライバーがランダムな順序で読み込まれます。 この場合は通常、ドライバーがインストールされた順序に基づいてドライバーが読み込まれます。
ミニフィルター ドライバーまたはレガシ フィルター ドライバーで読み込み順序グループが指定されない場合は、読み込み順序グループを指定する同じ開始の種類の他のすべてのドライバーの後に読み込まれます。