共用方式為


FilterReplyMessage 函式 (fltuser.h)

FilterReplyMessage函式會回復來自核心模式迷你篩選的訊息。

語法

HRESULT FilterReplyMessage(
  [in] HANDLE               hPort,
  [in] PFILTER_REPLY_HEADER lpReplyBuffer,
  [in] DWORD                dwReplyBufferSize
);

參數

[in] hPort

先前呼叫 FilterConnectCommunicationPort所傳回的通訊埠控制碼。 這個參數是必要的,而且不能是 Null

[in] lpReplyBuffer

呼叫端配置的緩衝區指標,其中包含要傳送至迷你篩選的回復。 回復必須包含 FILTER_REPLY_HEADER 結構,否則其格式為呼叫端定義。 這個參數是必要的,而且不能是 Null

[in] dwReplyBufferSize

lpReplyBuffer參數指向的緩衝區大小,以位元組為單位。 請參閱<備註>一節。

傳回值

如果成功,FilterReplyMessage會傳回S_OK。 否則,它會傳回錯誤值。

備註

使用者模式應用程式會呼叫 FilterReplyMessage 函式,以回復從核心模式迷你篩選接收的訊息。

若要從迷你篩選取得訊息,請呼叫 FilterGetMessage

若要將訊息傳送至迷你篩選,請呼叫 FilterSendMessage

迷你篩選會呼叫 FltSendMessage,將訊息傳送至使用者模式應用程式。

重要  

由於 (系統特定的) 結構 填補 需求,因此當您設定與 FltSendMessageFilterReplyMessage相關聯的緩衝區大小時,需要精確度。 例如,假設資料必須透過 FilterReplyMessage) 傳送 (到迷你篩選。 使用者模式元件可能會宣告下列結構來執行此動作:

typedef struct _REPLY_STRUCT
{
     FILTER_REPLY_HEADER Header;
     MY_STRUCTURE Data;  // The structure to be sent to the minifilter.
} REPLY_STRUCT, *PREPLY_STRUCT;

假設有這個結構,FilterReplyMessage的呼叫端可能會將dwReplyBufferSize參數設定為 sizeof(REPLY_STRUCT)並將 FltSendMessageReplyLength參數設定為相同的值。 不過,由於結構填補 idiosyncrasies, sizeof(REPLY_STRUCT) 可能會大於 sizeof(FILTER_REPLY_HEADER) + sizeof(MY_STRUCT) 。 如果是這種情況, FltSendMessage 會傳回STATUS_BUFFER_OVERFLOW。

因此,建議您呼叫 FilterReplyMessageFltSendMessage (利用上述範例) ,方法是將 dwReplyBufferSizeReplyLength 設定為 sizeof(FILTER_REPLY_HEADER) + sizeof(MY_STRUCT) ,而不是 sizeof(REPLY_STRUCT) 。 這可確保忽略 REPLY_STRUCT 結構結尾的任何額外填補。

 

需求

   
最低支援的用戶端 適用于 SP4、Windows XP SP2、Windows Server 2003 SP1 和更新版本的作業系統的 Microsoft Windows 2000 Update 匯總 1。 無法在 Windows 2000 SP4 和舊版作業系統中使用。
目標平台 Universal
標頭 fltuser.h (包含 FltUser.h)
程式庫 FltLib.lib
Dll FltLib.dll

另請參閱

FILTER_REPLY_HEADER

FilterConnectCommunicationPort

FilterGetMessage

FilterSendMessage

FltSendMessage