次の方法で共有


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 です。

戻り値

戻り値 説明
STATUS_SUCCESS
正常終了しました。
STATUS_NOT_SUPPORTED
リダイレクトはサポートされていません。
STATUS_INVALID_PARAMETER
このルーチンを呼び出した後、ソース デバイス スタックが大きすぎます。

注釈

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

こちらもご覧ください

FLT_CALLBACK_DATA

FLT_IO_PARAMETER_BLOCK

FltIsIoRedirectionAllowed

FltIsIoRedirectionAllowedForOperation

PFLT_PRE_OPERATION_CALLBACK