PFLT_MESSAGE_NOTIFY回调函数 (fltkernel.h)

FltMgr 每当用户模式应用程序 调用 filterSendMessage 通过客户端端口将消息发送到微型筛选器时,MessageNotifyCallback 回调函数调用。

语法

PFLT_MESSAGE_NOTIFY PfltMessageNotify;

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

参数

PortCookie

[in]指向唯一标识此客户端端口的微筛选器定义的信息的指针。 创建客户端端口时,微型筛选器在其 ConnectNotifyCallback 例程的 ConnectionPortCookie 参数中返回此上下文指针。

InputBuffer

[in]指向调用方分配的缓冲区的指针,其中包含要发送到微筛选器的消息。

InputBuffer 是指向原始解锁的用户模式缓冲区的指针。 此指针仅在用户模式进程的上下文中有效,并且只能在 try/except 块内访问。

FltMgr 调用 ProbeForRead 来验证此指针,但不能保证缓冲区正确对齐。 如果缓冲区包含具有对齐要求的结构,则微筛选器负责执行任何必要的对齐检查。 为此,微型筛选器可以使用 IS_ALIGNED 宏,如 MiniSpy 示例微筛选器所示。

此参数是可选的,可以是 NULL。

InputBufferLength

[in]InputBuffer 指向的缓冲区的大小(以字节为单位)。 如果 InputBuffer 为 NULL,则忽略此参数。

OutputBuffer

[out]指向从微筛选器接收回复(如果有)的调用方分配的缓冲区的指针。

OutputBuffer 是指向原始解锁的用户模式缓冲区的指针。 此指针仅在用户模式进程的上下文中有效,并且只能在 try/except 块内访问。

FltMgr 调用 ProbeForWrite 来验证此指针,但它不确保缓冲区正确对齐。 如果缓冲区包含具有对齐要求的结构,则微筛选器负责执行任何必要的对齐检查。 为此,微型筛选器可以使用 IS_ALIGNED 宏,如 MiniSpy 示例微筛选器所示。

此参数是可选的,可以是 NULL。

OutputBufferLength

[in]OutputBuffer 指向的缓冲区的大小(以字节为单位)。 如果 outputBuffer 为 NULL,则忽略此参数。

ReturnOutputBufferLength

[out]指向调用方分配的变量的指针,该变量接收 OutputBuffer 指向的缓冲区中返回的字节数。

返回值

如果操作成功,则 MessageNotifyCallback 返回STATUS_SUCCESS。 否则,它将返回相应的 NTSTATUS 值,例如:

返回代码 意义
STATUS_INSUFFICIENT_RESOURCES 没有足够的资源来完成操作。
STATUS_INVALID_PARAMETER 一个或多个输入参数无效。

言论

微型筛选器可以选择实现 MessageNotifyCallback。 如果微筛选器未实现此回调,则从用户模式向端口发送数据的任何请求都将收到错误。

有关详细信息,请参阅 用户模式与微型筛选器之间的通信

要求

要求 价值
标头 fltkernel.h
FltMgr.lib
DLL FltMgr.sys
IRQL PASSIVE_LEVEL

另请参阅

ConnectNotifyCallback

FilterSendMessage

FltCreateCommunicationPort