FltAdjustDeviceStackSizeForIoRedirection 関数 (fltkernel.h)
FltAdjustDeviceStackSizeForIoRedirection ルーチンは、ソース デバイス スタックのサイズを大きくして、ターゲット スタックがソース スタックより深い場合に、ミニフィルターが指定したソース インスタンスから指定されたターゲット インスタンスに I/O をリダイレクトできるようにします。
構文
NTSTATUS FLTAPI FltAdjustDeviceStackSizeForIoRedirection(
[in] PFLT_INSTANCE SourceInstance,
[in] PFLT_INSTANCE TargetInstance,
[out, optional] PBOOLEAN SourceDeviceStackSizeModified
);
パラメーター
[in] SourceInstance
ソース デバイス スタック上のフィルター インスタンス。
[in] TargetInstance
ターゲット デバイス スタックのフィルター インスタンス。
[out, optional] SourceDeviceStackSizeModified
FltAdjustDeviceStackSizeForIoRedirection ルーチンがソース デバイス スタックのサイズを変更した場合、この省略可能なパラメーターの値は TRUE、それ以外の場合は FALSE です。
戻り値
戻り値 | 説明 |
---|---|
|
正常終了しました。 |
|
リダイレクトはサポートされていません。 |
|
このルーチンを呼び出した後、ソース デバイス スタックが大きすぎます。 |
注釈
FltAdjustDeviceStackSizeForIoRedirection を使用しても、ミニフィルターで検出されるすべての IRP のサイズがターゲット スタックにリダイレクトされるのに十分であるとは限りません。 FltAdjustDeviceStackSizeForIoRedirection の呼び出しの前に割り当てられ、発行された IRP は、古いスタック サイズに基づいて割り当てられたままです。
ミニフィルターは、I/O がリダイレクトされるスタックをフィルターが認識している場合、インスタンスのセットアップ中にスタック サイズを調整できます。
フィルターは、 FltCreateFile を使用して、新しいスタックに独自の作成操作を発行できます。 作成操作を完了する前に、フィルターはターゲット スタックを考慮してスタック サイズを調整できます。 この調整を行うと、作成アクションが完了する前にスタック サイズが確実に調整されます。 そのファイル オブジェクトに割り当てられているすべての IRP には、リダイレクトをサポートするのに十分な大きさのスタックがあります。
インスタンスのセットアップ中、またはリダイレクトされたファイル オブジェクトの作成後のコールバック中に、 FltIsIoRedirectionAllowed を使用して、ソース スタックを変更せずにリダイレクトが可能かどうかを判断します。 必要に応じて、 FltAdjustDeviceStackSizeForIoRedirection を使用してソース スタックを調整します。
リダイレクトを必要とするすべての操作の事前操作コールバックで、 FltIsIoRedirectionAllowedForOperation を使用して、ソース スタックを変更せずにリダイレクトが可能かどうかを判断します。 必要に応じて、 FltAdjustDeviceStackSizeForIoRedirection を使用してソース スタックを調整します。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 7 以降のバージョンの Windows オペレーティング システムで使用できます。 |
対象プラットフォーム | ユニバーサル |
Header | fltkernel.h (FltKernel.h を含む) |
Library | FltMgr.lib |
IRQL | <=DISPATCH_LEVEL |