FltGetSwappedBufferMdlAddress 関数 (fltkernel.h)
FltGetSwappedBufferMdlAddress ルーチンは、ミニフィルター ドライバーによってスワップされたバッファーのメモリ記述子リスト (MDL) アドレスを返します。
構文
PMDL FltGetSwappedBufferMdlAddress(
[in] PFLT_CALLBACK_DATA CallbackData
);
パラメーター
[in] CallbackData
操作のコールバック データ構造へのポインター。
戻り値
FltGetSwappedBufferMdlAddress は、呼び出し元によってスワップされたバッファーの MDL アドレスを返します。 FltGetSwappedBufferMdlAddress は、次の場合に NULL を 返します。
- 操作は高速 I/O 操作です。 高速 I/O 操作では、バッファーに MDL を含めることはできません。
- 呼び出し元によってスワップされたバッファーに MDL がありません。
- ミニフィルター ドライバーは、事前操作コールバック ルーチン内のバッファーをスワップしませんでした。
注釈
事前操作コールバック ルーチンの新しいバッファーでスワップするミニフィルター ドライバーは、対応する postoperation コールバック ルーチンから FltGetSwappedBufferMdlAddress を呼び出すことによって、バッファーの MDL アドレスを取得できます。
FltGetSwappedBufferMdlAddress ルーチンは、呼び出し元の事前操作コールバック ルーチンによってスワップされたのではなく、元のバッファーと MDL アドレスを含むコールバック データ構造体を受け取るため、必要です。
呼び出し元がスワップインしたバッファーの MDL を作成しなかった場合でも、 FltGetSwappedBufferMdlAddress が NULL 以外の MDL 値を返す可能性があります。 これは、ミニフィルター ドライバー、レガシ フィルター ドライバー、またはミニフィルター ドライバーまたはファイル システム ドライバー スタックの呼び出し元の下にあるファイル システム ドライバーによって、バッファーの MDL が作成されるときに発生します。
FltGetSwappedBufferMdlAddress は、呼び出し元がその事前操作コールバック ルーチンの新しいバッファーでスワップしなかった場合でも、NULL 以外の MDL 値を返すこともできます。 これは、ページング I/O などの操作で発生します。バッファーは NULL で、呼び出し元は新しい MDL アドレスでスワップされます。
呼び出し元によってスワップされたバッファーの MDL は、操作後のコールバック ルーチンが返されるときに、フィルター マネージャーによって自動的に解放されます。 この MDL が解放されないようにするには、 FltRetainSwappedBufferMdlAddress を呼び出します。
FltGetSwappedBufferMdlAddress は、操作後のコールバック ルーチンからのみ呼び出すことができます。
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
Header | fltkernel.h (Fltkernel.h を含む) |
Library | FltMgr.lib |
[DLL] | Fltmgr.sys |
IRQL | 任意のレベル |
こちらもご覧ください
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示