Communication Between User Mode and Kernel Mode 用户模式和内核模式间的通信

过滤管理器支持内核模式和用户模式的通信通过通信端口 。微过滤驱动控制端口的安全通过指定一个安全描述,它用作申请通信端口对象 。通信通过通信端口而不是缓存 ,所以它更快更有效 。用户模式应用程序或服务能回复消息给微过滤驱动作为双向通信 。

当微过滤驱动创建一个通信服务端口 ,它隐式的开始监听这个端口的连接 。当用户模式调用者尝试连接这个端口 ,过滤管理器调用微过滤驱动的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 

转载于:https://www.cnblogs.com/dltao/archive/2011/01/12/1933989.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值