用户模式与微型筛选器之间的通信
FltMgr 支持通过通信端口在用户模式 (UM) 应用程序和内核模式 (KM) 微筛选器之间进行通信。 例如,防病毒应用程序需要与其 KM 微筛选器通信,以扫描文件以查找病毒和恶意软件。
微型筛选器通过指定要应用于通信端口对象的安全描述符来控制端口上的安全性。 不会缓冲通过通信端口进行通信,因此速度更快、更高效。
UM 应用或服务可以回复来自微筛选器的消息进行双向通信。 通信按如下所述建立:
微型筛选器驱动程序调用 FltCreateCommunicationPort 来创建通信服务器端口。 作为侦听器端口的创建者,微型筛选器立即开始侦听所创建的端口上的传入连接。
当 UM 应用或服务调用 FilterConnectCommunicationPort 以尝试连接到端口时,FltMgr 将使用新创建的连接的句柄调用微型筛选器的 ConnectNotifyCallback 回调例程。 回调完成后, FltMgr 会向 UM 调用方传递一个单独的文件句柄,该句柄表示 UM 调用方到连接的终结点。 UM 调用方可以使用此句柄将多个 I/O 完成端口与侦听器端口相关联。 此功能对需要同时处理大量 I/O 操作的应用非常有用。
FltMgr 仅当 UM 调用方具有由端口上的安全描述符指定的足够访问权限时,才接受连接请求。 与端口的每个连接都获取其自己的消息队列和专用终结点。
关闭终结点(内核或用户)将终止该连接。 当 UM 调用方将其句柄关闭到终结点时,FltMgr 调用微型筛选器驱动程序的 DisconnectNotifyCallback 例程,以便微型筛选器驱动程序可以关闭其句柄以连接到连接。
关闭通信服务器端口会阻止新连接,但不会终止现有连接。 当微型筛选器驱动程序卸载时,FltMgr 将终止现有连接。
用于 UM 和 KM 之间的通信的 FltMgr 例程
FltMgr 为微型筛选器与 UM 应用程序通信提供以下支持例程:
UM 应用程序和服务可以使用以下系统提供的支持例程来与微型筛选器驱动程序通信:
UM 与 KM 之间通信的微型筛选器回调例程
微型筛选器实现以下回调例程,以支持 UM 和 KM 之间的通信。 调用 FltCreateCommunicationPort 时,它会将指针传递给这些例程。
回调例程名称 | 回调例程类型 |
---|---|
ConnectNotifyCallback | PFLT_CONNECT_NOTIFY |
DisconnectNotifyCallback | PFLT_DISCONNECT_NOTIFY |
MessageNotifyCallback | PFLT_MESSAGE_NOTIFY |