FilterGetMessage 関数 (fltuser.h)
FilterGetMessage 関数は、カーネル モードのミニフィルターからメッセージを取得します。
構文
HRESULT FilterGetMessage(
[in] HANDLE hPort,
[out] PFILTER_MESSAGE_HEADER lpMessageBuffer,
[in] DWORD dwMessageBufferSize,
[in, out] LPOVERLAPPED lpOverlapped
);
パラメーター
[in] hPort
FilterConnectCommunicationPort の以前の呼び出しによって返された通信ポート ハンドル。 このパラメーターは必須であり、 NULL にすることはできません。
[out] lpMessageBuffer
ミニフィルターからメッセージを受信する呼び出し元によって割り当てられたバッファーへのポインター。 メッセージには FILTER_MESSAGE_HEADER 構造体が含まれている必要がありますが、それ以外の場合、その形式は呼び出し元定義です。 このパラメーターは必須であり、 NULL にすることはできません。
[in] dwMessageBufferSize
lpMessageBuffer パラメーターが指すバッファーのサイズ (バイト単位)。
[in, out] lpOverlapped
OVERLAPPED 構造体へのポインター。 このパラメーターは省略可能であり、 NULL にすることができます。 NULL でない場合、呼び出し元は、OVERLAPPED 構造体の hEvent メンバーを有効なイベント ハンドルまたは NULL に初期化する必要があります。
戻り値
FilterGetMessage は 、成功した場合S_OKを返します。 それ以外の場合は、エラー値を返します。
解説
FilterGetMessage 関数は、同期操作と非同期操作 (重複) の両方に対応するように設計されています。
lpOverlapped が NULL で、メッセージが使用可能な場合、FilterGetMessage は直ちにを返します。 それ以外の場合、呼び出し元はメッセージを受信するまで待機状態になります。
lpOverlapped が NULL でない場合、FilterGetMessage はERROR_IO_PENDINGを返します。 このような状況では、 lpOverlapped 構造体のイベント オブジェクトは、 FilterGetMessage が返される前に、非署名状態に設定されます。 メッセージが配信されると、このイベントはシグナル状態に設定されます。
ミニフィルターからメッセージを受信した後、呼び出し元は FilterReplyMessage を呼び出して応答を送信できます。
ミニフィルターまたはインスタンスは 、FltSendMessage を呼び出して、ユーザー モード アプリケーションにメッセージを送信します。
要件
対象プラットフォーム | ユニバーサル |
Header | fltuser.h (Fltuser.h を含む) |
Library | FltLib.lib |
[DLL] | FltLib.dll |