次の方法で共有


PFLT_MESSAGE_NOTIFY コールバック関数 (fltkernel.h)

FltMgr は、ユーザー モード アプリケーションが FilterSendMessage を呼び出して、クライアント ポートを介してミニフィルターにメッセージを送信するたびに、ミニフィルターの MessageNotifyCallback コールバック関数を呼び出します。

構文

PFLT_MESSAGE_NOTIFY PfltMessageNotify;

NTSTATUS PfltMessageNotify(
  PVOID PortCookie,
  PVOID InputBuffer,
  ULONG InputBufferLength,
  PVOID OutputBuffer,
  ULONG OutputBufferLength,
  PULONG ReturnOutputBufferLength
)
{...}

パラメーター

PortCookie

[in]このクライアント ポートを一意に識別するミニフィルター定義情報へのポインター。 クライアント ポートが作成されると、ミニフィルターは、ConnectNotifyCallback ルーチンの ConnectionPortCookie パラメーターでこのコンテキスト ポインターを返しました。

InputBuffer

[in]ミニフィルターに送信されるメッセージを含む呼び出し元によって割り当てられたバッファーへのポインター。

InputBuffer は、未加工のロック解除されたユーザー モード バッファーへのポインターです。 このポインターは、ユーザー モード プロセスのコンテキストでのみ有効であり、try/except ブロック内からのみアクセスする必要があります。

FltMgr 、ProbeForRead 呼び出してこのポインターを検証しますが、バッファーが適切に配置されていることを確認しません。 バッファーに配置要件がある構造体が含まれている場合、ミニフィルターは必要なアラインメント チェックを実行します。 これを行うには、ミニフィルターは、MiniSpy サンプル ミニフィルターに示すように、IS_ALIGNED マクロを使用できます。

このパラメーターは省略可能であり、NULL にすることができます。

InputBufferLength

[in]InputBuffer が指 バッファーのサイズ (バイト単位)。 InputBuffer NULL の場合、このパラメーターは無視されます。

OutputBuffer

[out]ミニフィルターから応答を受信する呼び出し元によって割り当てられたバッファー (存在する場合) へのポインター。

OutputBuffer は、未加工のロック解除されたユーザー モード バッファーへのポインターです。 このポインターは、ユーザー モード プロセスのコンテキストでのみ有効であり、try/except ブロック内からのみアクセスする必要があります。

FltMgr 、ProbeForWrite 呼び出してこのポインターを検証しますが、バッファーが適切に配置されていることを確認しません。 バッファーに配置要件がある構造体が含まれている場合、ミニフィルターは必要なアラインメント チェックを実行します。 これを行うには、ミニフィルターは、MiniSpy サンプル ミニフィルターに示すように、IS_ALIGNED マクロを使用できます。

このパラメーターは省略可能であり、NULL にすることができます。

OutputBufferLength

[in]OutputBuffer が指 バッファーのサイズ (バイト単位)。 OutputBuffer が NULL の場合、このパラメーターは無視されます。

ReturnOutputBufferLength

[out]OutputBuffer が指す バッファーで返されるバイト数を受け取る呼び出し元によって割り当てられた変数へのポインター。

戻り値

MessageNotifyCallback は、操作が成功した場合にSTATUS_SUCCESSを返します。 それ以外の場合は、次のような適切な NTSTATUS 値が返されます。

リターン コード 意味
STATUS_INSUFFICIENT_RESOURCES 操作を完了するのに十分なリソースがありません。
STATUS_INVALID_PARAMETER 1 つ以上の入力パラメーターが無効です。

備考

ミニフィルターは、必要に応じて、MessageNotifyCallbackを実装できます。 ミニフィルターでこのコールバックが実装されていない場合、ポートにデータを送信するためにユーザー モードから行われた要求はエラーを受け取ります。

詳細については、「ユーザー モードとミニフィルターの間の通信を参照してください。

必要条件

要件 価値
ヘッダー fltkernel.h
ライブラリ FltMgr.lib
DLL FltMgr.sys
IRQL PASSIVE_LEVEL

関連項目

ConnectNotifyCallback の

FilterSendMessage

FltCreateCommunicationPort を する