Share via


複数層レジストリ フィルター ドライバーのサポート

Windows Vista 以降のオペレーティング システム バージョンでは、レジストリ フィルター ドライバーの階層化されたスタックがサポートされています。 スタック内の各ドライバーは、RegistryCallback ルーチンを登録することで、レジストリ操作のフィルター処理に参加できます。 各レジストリ フィルター ドライバーには高度が割り当てられ、ドライバーは高度ごとに 1 つの RegistryCallback ルーチンのみを登録できます。 ドライバーが CmRegisterCallbackEx を呼び出すと、ドライバーは高度を指定します。 高度の詳細については、ミニフィルター ドライバーの負荷順序グループと高度を参照してください。

スレッドがレジストリ呼び出しを行うと、すべてのドライバーが呼び出されるまで、または RegistryCallback ルーチンが FALSE と等しい NT_SUCCESS (状態) の状態値を返すまで、構成マネージャーは、最も高い高度から最下位の順に各 RegistryCallback ルーチンを呼び出します。 したがって、上位レベルのドライバーがレジストリ操作をブロックまたは変更した場合、下位レベルのドライバーは呼び出されません。 (ドライバーが別のレジストリ関数を呼び出して操作を変更した場合、構成マネージャーはフィルター スタックの上部で再起動しません)。

Windows Vista より前に記述されたレジストリ フィルター ドライバーで、高度の割り当てがない場合は、CmRegisterCallback を呼び出す順序で、Windows Vista フィルター スタックの上部近くに挿入されます。