Função FilterReplyMessage (fltuser.h)

A função FilterReplyMessage responde a uma mensagem de um minifiltro no modo kernel.

Sintaxe

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

Parâmetros

[in] hPort

Identificador de porta de comunicação retornado por uma chamada anterior para FilterConnectCommunicationPort. Esse parâmetro é necessário e não pode ser NULL.

[in] lpReplyBuffer

Um ponteiro para um buffer alocado pelo chamador que contém a resposta a ser enviada para o minifiltro. A resposta deve conter uma estrutura FILTER_REPLY_HEADER , mas, caso contrário, seu formato é definido pelo chamador. Esse parâmetro é necessário e não pode ser NULL.

[in] dwReplyBufferSize

Tamanho, em bytes, do buffer para o qual o parâmetro lpReplyBuffer aponta. Consulte a seção Comentários.

Valor retornado

FilterReplyMessage retorna S_OK se tiver êxito. Caso contrário, retornará um valor de erro.

Comentários

Um aplicativo no modo de usuário chama a função FilterReplyMessage para responder a uma mensagem recebida de um minifiltro no modo kernel.

Para obter uma mensagem de um minifiltro, chame FilterGetMessage.

Para enviar uma mensagem para um minifiltro, chame FilterSendMessage.

Um minifiltro envia uma mensagem para um aplicativo de modo de usuário chamando FltSendMessage.

Importante  

Devido aos requisitos de preenchimento de estrutura (específicos do sistema), a precisão é necessária quando você define o tamanho dos buffers associados a FltSendMessage e FilterReplyMessage. Por exemplo, suponha que os dados devem ser enviados (por meio de FilterReplyMessage) para um minifiltro. O componente do modo de usuário pode declarar a seguinte estrutura para fazer isso:

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

Dada essa estrutura, pode parecer óbvio que o chamador de FilterReplyMessage definiria o parâmetro dwReplyBufferSize como sizeof(REPLY_STRUCT) e o parâmetro ReplyLength de FltSendMessage com o mesmo valor. No entanto, devido a idiossincrasias de preenchimento de estrutura, sizeof(REPLY_STRUCT) pode ser maior que sizeof(FILTER_REPLY_HEADER) + sizeof(MY_STRUCT). Se esse for o caso, FltSendMessage retornará STATUS_BUFFER_OVERFLOW.

Portanto, recomendamos que você chame FilterReplyMessage e FltSendMessage (aproveitando o exemplo acima) definindo dwReplyBufferSize e ReplyLength como sizeof(FILTER_REPLY_HEADER) + sizeof(MY_STRUCT) em vez de sizeof(REPLY_STRUCT). Isso garante que qualquer preenchimento extra no final da estrutura REPLY_STRUCT seja ignorado.

 

Requisitos

   
Cliente mínimo com suporte Disponível no Pacote Cumulativo de Atualizações do Microsoft Windows 2000 1 para SP4, Windows XP SP2, Windows Server 2003 SP1 e sistemas operacionais posteriores. Não disponível no Windows 2000 SP4 e em sistemas operacionais anteriores.
Plataforma de Destino Universal
Cabeçalho fltuser.h (inclua FltUser.h)
Biblioteca FltLib.lib
DLL FltLib.dll

Confira também

FILTER_REPLY_HEADER

FilterConnectCommunicationPort

FilterGetMessage

FilterSendMessage

FltSendMessage