Freigeben über


FilterReplyMessage-Funktion (fltuser.h)

Die FilterReplyMessage-Funktion antwortet auf eine Nachricht aus einem Kernelmodus-Minifilter.

Syntax

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

Parameter

[in] hPort

Kommunikationsporthandle, das von einem vorherigen Aufruf von FilterConnectCommunicationPort zurückgegeben wurde. Dieser Parameter ist erforderlich und darf nicht NULL sein.

[in] lpReplyBuffer

Ein Zeiger auf einen vom Aufrufer zugewiesenen Puffer, der die Antwort enthält, die an den Minifilter gesendet werden soll. Die Antwort muss eine FILTER_REPLY_HEADER-Struktur enthalten, andernfalls ist ihr Format vom Aufrufer definiert. Dieser Parameter ist erforderlich und darf nicht NULL sein.

[in] dwReplyBufferSize

Größe des Puffers, auf den der lpReplyBuffer-Parameter verweist, in Bytes. Weitere Informationen finden Sie im Abschnitt mit den Hinweisen.

Rückgabewert

FilterReplyMessage gibt bei erfolgreicher Ausführung S_OK zurück. Andernfalls wird ein Fehlerwert zurückgegeben.

Hinweise

Eine Benutzermodusanwendung ruft die FilterReplyMessage-Funktion auf, um auf eine Nachricht zu antworten, die von einem Kernelmodus-Minifilter empfangen wird.

Um eine Nachricht von einem Minifilter abzurufen, rufen Sie FilterGetMessage auf.

Um eine Nachricht an einen Minifilter zu senden, rufen Sie FilterSendMessage auf.

Ein Minifilter sendet eine Nachricht an eine Anwendung im Benutzermodus, indem FltSendMessage aufgerufen wird.

Wichtig  

Aufgrund der (systemspezifischen) Strukturfüllungsanforderungen ist Genauigkeit erforderlich, wenn Sie die Größe der Puffer festlegen, die FltSendMessage und FilterReplyMessage zugeordnet sind. Angenommen, Daten müssen (über FilterReplyMessage) an einen Minifilter gesendet werden. Die Benutzermoduskomponente kann dazu die folgende Struktur deklarieren:

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

Angesichts dieser Struktur scheint es offensichtlich, dass der Aufrufer von FilterReplyMessage den dwReplyBufferSize-Parameter auf sizeof(REPLY_STRUCT) und den ReplyLength-Parameter von FltSendMessage auf denselben Wert festlegen würde. Aufgrund von Strukturfüllungs-Idiosyncrasies sizeof(REPLY_STRUCT) kann jedoch größer als sizeof(FILTER_REPLY_HEADER) + sizeof(MY_STRUCT)sein. In diesem Fall gibt FltSendMessage STATUS_BUFFER_OVERFLOW zurück.

Daher empfiehlt es sich, FilterReplyMessage und FltSendMessage (unter Verwendung des obigen Beispiels) aufzurufensizeof(FILTER_REPLY_HEADER) + sizeof(MY_STRUCT), indem Sie dwReplyBufferSize und ReplyLength auf anstelle von sizeof(REPLY_STRUCT)festlegen. Dadurch wird sichergestellt, dass alle zusätzlichen Auffüllungen am Ende der REPLY_STRUCT-Struktur ignoriert werden.

 

Anforderungen

   
Unterstützte Mindestversion (Client) Verfügbar in Microsoft Windows 2000 UpdateRollup 1 für SP4, Windows XP SP2, Windows Server 2003 SP1 und höher. Nicht verfügbar in Windows 2000 SP4 und früheren Betriebssystemen.
Zielplattform Universell
Header fltuser.h (include FltUser.h)
Bibliothek FltLib.lib
DLL FltLib.dll

Weitere Informationen

FILTER_REPLY_HEADER

FilterConnectCommunicationPort

FilterGetMessage

FilterSendMessage

FltSendMessage