Compartir a través de


Función FilterReplyMessage (fltuser.h)

La función FilterReplyMessage responde a un mensaje de un minifiltro en modo kernel.

Sintaxis

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

Parámetros

[in] hPort

Identificador de puerto de comunicación devuelto por una llamada anterior a FilterConnectCommunicationPort. Este parámetro es obligatorio y no puede ser NULL.

[in] lpReplyBuffer

Puntero a un búfer asignado por el autor de la llamada que contiene la respuesta que se va a enviar al minifiltro. La respuesta debe contener una estructura de FILTER_REPLY_HEADER , pero de lo contrario, su formato es definido por el autor de la llamada. Este parámetro es obligatorio y no puede ser NULL.

[in] dwReplyBufferSize

Tamaño, en bytes, del búfer al que apunta el parámetro lpReplyBuffer . Consulte la sección Comentarios.

Valor devuelto

FilterReplyMessage devuelve S_OK si se ejecuta correctamente. De lo contrario, devuelve un valor de error.

Comentarios

Una aplicación en modo de usuario llama a la función FilterReplyMessage para responder a un mensaje recibido de un minifiltro en modo kernel.

Para obtener un mensaje de un minifiltro, llame a FilterGetMessage.

Para enviar un mensaje a un minifiltro, llame a FilterSendMessage.

Un minifiltro envía un mensaje a una aplicación en modo de usuario llamando a FltSendMessage.

Importante  

Debido a los requisitos de relleno de estructura (específicos del sistema), se requiere precisión cuando se establece el tamaño de los búferes asociados a FltSendMessage y FilterReplyMessage. Por ejemplo, supongamos que los datos deben enviarse (a través de FilterReplyMessage) a un minifiltro. El componente en modo de usuario puede declarar la siguiente estructura para hacerlo:

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

Dada esta estructura, podría parecer obvio que el autor de la llamada de FilterReplyMessage establecería el parámetro sizeof(REPLY_STRUCT)dwReplyBufferSize en y el parámetro ReplyLength de FltSendMessage en el mismo valor. Sin embargo, debido al relleno de estructuras idiosincrónicas, sizeof(REPLY_STRUCT) puede ser mayor que sizeof(FILTER_REPLY_HEADER) + sizeof(MY_STRUCT). Si este es el caso, FltSendMessage devuelve STATUS_BUFFER_OVERFLOW.

Por lo tanto, se recomienda llamar a FilterReplyMessage y FltSendMessage (aprovechando el ejemplo anterior) estableciendo dwReplyBufferSize y ReplyLength en sizeof(FILTER_REPLY_HEADER) + sizeof(MY_STRUCT) en lugar de sizeof(REPLY_STRUCT). Esto garantiza que se omita cualquier relleno adicional al final de la estructura de REPLY_STRUCT .

 

Requisitos

   
Cliente mínimo compatible Disponible en el paquete acumulativo de actualizaciones 1 de Microsoft Windows 2000 para SP4, Windows XP SP2, Windows Server 2003 SP1 y sistemas operativos posteriores. No está disponible en Windows 2000 SP4 y en sistemas operativos anteriores.
Plataforma de destino Universal
Encabezado fltuser.h (include FltUser.h)
Library FltLib.lib
Archivo DLL FltLib.dll

Consulte también

FILTER_REPLY_HEADER

FilterConnectCommunicationPort

FilterGetMessage

FilterSendMessage

FltSendMessage