Condividi tramite


Funzione FilterReplyMessage (fltuser.h)

La funzione FilterReplyMessage risponde a un messaggio da un minifilter in modalità kernel.

Sintassi

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

Parametri

[in] hPort

Handle della porta di comunicazione restituito da una chiamata precedente a FilterConnectCommunicationPort. Questo parametro è obbligatorio e non può essere NULL.

[in] lpReplyBuffer

Puntatore a un buffer allocato del chiamante contenente la risposta da inviare al minifilter. La risposta deve contenere una struttura FILTER_REPLY_HEADER , ma in caso contrario, il relativo formato è definito dal chiamante. Questo parametro è obbligatorio e non può essere NULL.

[in] dwReplyBufferSize

Dimensioni, in byte, del buffer a cui punta il parametro lpReplyBuffer . Vedere la sezione relativa alle osservazioni.

Valore restituito

FilterReplyMessage restituisce S_OK se riuscito. In caso contrario, restituisce un valore di errore.

Commenti

Un'applicazione in modalità utente chiama la funzione FilterReplyMessage per rispondere a un messaggio ricevuto da un minifilter in modalità kernel.

Per ottenere un messaggio da un minifiltro, chiamare FilterGetMessage.

Per inviare un messaggio a un minifiltro, chiamare FilterSendMessage.

Un minifilter invia un messaggio a un'applicazione in modalità utente chiamando FltSendMessage.

Importante  

A causa dei requisiti di riempimento della struttura (specifici del sistema), l'accuratezza è necessaria quando si impostano le dimensioni dei buffer associati a FltSendMessage e FilterReplyMessage. Si supponga, ad esempio, che i dati vengano inviati (tramite FilterReplyMessage) a un minifilter. Il componente in modalità utente potrebbe dichiarare la struttura seguente a tale scopo:

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

Dato questa struttura, potrebbe sembrare ovvio che il chiamante di FilterReplyMessage imposta il parametro dwReplyBufferSize su sizeof(REPLY_STRUCT) e il parametro ReplyLength di FltSendMessage sullo stesso valore. Tuttavia, a causa delle idioincrone di riempimento della struttura, sizeof(REPLY_STRUCT) potrebbe essere maggiore di sizeof(FILTER_REPLY_HEADER) + sizeof(MY_STRUCT). Se si tratta del caso, FltSendMessage restituisce STATUS_BUFFER_OVERFLOW.

Pertanto, è consigliabile chiamare FilterReplyMessage e FltSendMessage (sfruttando l'esempio precedente) impostando dwReplyBufferSize e ReplyLength invece sizeof(FILTER_REPLY_HEADER) + sizeof(MY_STRUCT) di sizeof(REPLY_STRUCT). Ciò garantisce che qualsiasi riempimento aggiuntivo alla fine della struttura REPLY_STRUCT venga ignorato.

 

Requisiti

   
Client minimo supportato Disponibile in Microsoft Windows 2000 Update Rollup 1 for SP4, Windows XP SP2, Windows Server 2003 SP1 e versioni successive. Non disponibile in Windows 2000 SP4 e nei sistemi operativi precedenti.
Piattaforma di destinazione Universale
Intestazione fltuser.h (include FltUser.h)
Libreria FltLib.lib
DLL FltLib.dll

Vedi anche

FILTER_REPLY_HEADER

FilterConnectCommunicationPort

FilterGetMessage

FilterSendMessage

FltSendMessage