次の方法で共有


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 関数は、同期操作と非同期操作 (重複) の両方に対応するように設計されています。

lpOverlappedNULL で、メッセージが使用可能な場合、FilterGetMessage は直ちにを返します。 それ以外の場合、呼び出し元はメッセージを受信するまで待機状態になります。

lpOverlappedNULL でない場合、FilterGetMessage はERROR_IO_PENDINGを返します。 このような状況では、 lpOverlapped 構造体のイベント オブジェクトは、 FilterGetMessage が返される前に、非署名状態に設定されます。 メッセージが配信されると、このイベントはシグナル状態に設定されます。

ミニフィルターからメッセージを受信した後、呼び出し元は FilterReplyMessage を呼び出して応答を送信できます。

ミニフィルターまたはインスタンスは 、FltSendMessage を呼び出して、ユーザー モード アプリケーションにメッセージを送信します。

要件

   
対象プラットフォーム ユニバーサル
Header fltuser.h (Fltuser.h を含む)
Library FltLib.lib
[DLL] FltLib.dll

関連項目

CreateEvent

FILTER_MESSAGE_HEADER

FilterConnectCommunicationPort

FilterReplyMessage

FilterSendMessage

FltSendMessage

GetOverlappedResult

HasOverlappedIoCompleted