过滤管理器支持内核模式和用户模式的通信通过通信端口 。微过滤驱动控制端口的安全通过指定一个安全描述,它用作申请通信端口对象 。通信通过通信端口而不是缓存 ,所以它更快更有效 。用户模式应用程序或服务能回复消息给微过滤驱动作为双向通信 。
当微过滤驱动创建一个通信服务端口 ,它隐式的开始监听这个端口的连接 。当用户模式调用者尝试连接这个端口 ,过滤管理器调用微过滤驱动的ConnectNotifyCallback 例程带一个新创建的连接的一个句柄 。当过滤管理器获得控制 ,它传递给用户模式调用者一个隔离的文件句柄用于连接,这个句柄代表用户模式调用者的终结点。用监听端口,这个句柄能能用作与 I/O完成端口相关联 。
一个连接被接受仅当用户模式调用者在这个端口上有足够的权限,权限由 安全描述(security descriptor )指定 。每一个对这个端口的连接获得它自己的信息队列(message queue )和私用终结点 。
关闭其中一个(内核或用户)中断连接 。当用户模式调用者关闭它的终结点句柄 ,过滤管理器调用微过滤驱动的DisconnectNotifyCallback 例程,因此微过滤驱动能关闭它的句柄的连接 。
关闭通信服务端口会阻止新的连接,但是已经存在的连接不被终止 。过滤管理器终止存在的连接当微过滤驱动被卸载时 。
内核模式和用户模式通信的过滤管理器例程
当内核模式与用户模式通信时 ,过滤管理器提供下列支持
FltCloseClientPort
FltCloseCommunicationPort
FltCreateCommunicationPort
FltSendMessage
当用户模式与内核模式通信时,过滤管理器提供下列支持
FilterConnectCommunicationPort
FilterGetMessage
FilterReplyMessage
FilterSendMessage
用作用户模式和内核模式通信的 微过滤驱动回调例程
下面微过滤驱动回调例程作为 FltCreateCommunicationPort的参数被传递 。
Callback Routine Name Callback Routine Type
ConnectNotifyCallback PFLT_CONNECT_NOTIFY
DisconnectNotifyCallback PFLT_DISCONNECT_NOTIFY
MessageNotifyCallback PFLT_MESSAGE_NOTIFY