次の方法で共有


FltReuseCallbackData 関数 (fltkernel.h)

FltReuseCallbackData ルーチンは、コールバック データ構造を再初期化して再利用できるようにします。

構文

VOID FLTAPI FltReuseCallbackData(
  [in, out] PFLT_CALLBACK_DATA CallbackData
);

パラメーター

[in, out] CallbackData

再利用するコールバック データ (FLT_CALLBACK_DATA) 構造体へのポインター。 この構造体は、 FltAllocateCallbackData の以前の呼び出しによって割り当てられている必要があります。 このパラメーターは必須であり、 NULL にすることはできません。

戻り値

なし

解説

FltReuseCallbackData は、コールバック データ (FLT_CALLBACK_DATA) 構造を再初期化して、新しい I/O 操作で使用できるようにします。 FltReuseCallbackData は、コールバック データ構造の I/O パラメーター ブロックの TargetInstance フィールドまたは TargetFileObject フィールドを変更しません。

FltReuseCallbackData ルーチンは、指定された CallbackData オブジェクトに関連付けられている MDL チェーンを解放します。 FLT_CALLBACK_DATA オブジェクトに関連付けられている MDL チェーンへのポインターは、そのオブジェクトの FltReuseCallbackData の呼び出し後に無効になります。

FltReuseCallbackData を使用してコールバック データ構造を再利用すると、構造体を解放して新しいデータ構造を割り当てるよりも高速です。

ミニフィルター ドライバーでは、FltAllocateCallbackData で割り当てられ、FltPerformSynchronousIo または FltPerformAsynchronousIo の呼び出しで使用されていたコールバック データ構造でのみ、FltReuseCallbackData を使用する必要があります。

コールバック データ構造が非同期 I/O に使用された場合、ミニフィルター ドライバーは FltPerformAsynchronousIo の呼び出しで指定された CallbackRoutine が呼び出されるまで FltReuseCallbackData を呼び出さないでください。

特に、ミニフィルター ドライバー自体によって割り当てられないコールバック データ構造には、このルーチンを使用しないでください。

要件

要件
対象プラットフォーム ユニバーサル
Header fltkernel.h (Fltkernel.h を含む)
Library FltMgr.lib
[DLL] Fltmgr.sys
IRQL <= APC_LEVEL

こちらもご覧ください

FLT_CALLBACK_DATA

FltAllocateCallbackData

FltFreeCallbackData

FltPerformAsynchronousIo

FltPerformSynchronousIo

FltReissueSynchronousIo