PFLT_MESSAGE_NOTIFY função de retorno de chamada (fltkernel.h)

do FltMgr chama a função de retorno de chamada MessageNotifyCallback de um minifiltro sempre que um aplicativo de modo de usuário chama FilterSendMessage para enviar uma mensagem ao minifiltro por meio da porta do cliente.

Sintaxe

PFLT_MESSAGE_NOTIFY PfltMessageNotify;

NTSTATUS PfltMessageNotify(
  PVOID PortCookie,
  PVOID InputBuffer,
  ULONG InputBufferLength,
  PVOID OutputBuffer,
  ULONG OutputBufferLength,
  PULONG ReturnOutputBufferLength
)
{...}

Parâmetros

PortCookie

[in] Ponteiro para informações definidas por minifiltro que identificam exclusivamente essa porta do cliente. Quando a porta do cliente foi criada, o minifiltro retornou esse ponteiro de contexto no parâmetro ConnectionPortCookie de sua rotina ConnectNotifyCallback.

InputBuffer

[in] Ponteiro para um buffer alocado pelo chamador que contém a mensagem a ser enviada para o minifiltro.

InputBuffer é um ponteiro para um buffer bruto de modo de usuário desbloqueado. Esse ponteiro é válido apenas no contexto do processo de modo de usuário e só deve ser acessado de dentro de uma tentativa/exceto bloco.

do FltMgr chama ProbeForRead para validar esse ponteiro, mas não garante que o buffer esteja alinhado corretamente. Se o buffer contiver estruturas com requisitos de alinhamento, o minifiltro será responsável por executar as verificações de alinhamento necessárias. Para fazer isso, o minifiltro pode usar a macro IS_ALIGNED, conforme mostrado no minifiltro de exemplo miniSpy .

Esse parâmetro é opcional e pode ser NULL.

InputBufferLength

[in] Tamanho, em bytes, do buffer para o qual o InputBuffer aponta. Esse parâmetro será ignorado se InputBuffer for NULL.

OutputBuffer

[out] Ponteiro para um buffer alocado pelo chamador que recebe a resposta, se houver, do minifiltro.

OutputBuffer é um ponteiro para um buffer bruto de modo de usuário desbloqueado. Esse ponteiro é válido apenas no contexto do processo de modo de usuário e só deve ser acessado de dentro de uma tentativa/exceto bloco.

do FltMgr chama ProbeForWrite para validar esse ponteiro, mas não garante que o buffer esteja alinhado corretamente. Se o buffer contiver estruturas com requisitos de alinhamento, o minifiltro será responsável por executar as verificações de alinhamento necessárias. Para fazer isso, o minifiltro pode usar a macro IS_ALIGNED, conforme mostrado no minifiltro de exemplo miniSpy .

Esse parâmetro é opcional e pode ser NULL.

OutputBufferLength

[in] Tamanho, em bytes, do buffer ao qual OutputBuffer aponta. Esse parâmetro será ignorado se OutputBuffer for NULL.

ReturnOutputBufferLength

[out] Ponteiro para uma variável alocada por chamador que recebe o número de bytes retornados no buffer para o qual OutputBuffer aponta.

Valor de retorno

MessageNotifyCallback retornará STATUS_SUCCESS se a operação for bem-sucedida. Caso contrário, ele retornará um valor NTSTATUS apropriado, como:

Código de retorno Significado
STATUS_INSUFFICIENT_RESOURCES Não há recursos suficientes para concluir a operação.
STATUS_INVALID_PARAMETER Um ou mais dos parâmetros de entrada são inválidos.

Observações

Os minifiltros podem, opcionalmente, implementar MessageNotifyCallback . Se um minifiltro não implementar esse retorno de chamada, qualquer solicitação feita do modo de usuário para enviar dados à porta receberá um erro.

Para obter mais informações, consulte Comunicação entre o modo de usuário e os minifiltros.

Requisitos

Requisito Valor
cabeçalho fltkernel.h
biblioteca FltMgr.lib
de DLL FltMgr.sys
IRQL PASSIVE_LEVEL

Consulte também

ConnectNotifyCallback

FilterSendMessage

FltCreateCommunicationPort