Windows 驱动与应用通信 之 事件对象

37 篇文章 0 订阅

驱动如何通知上层应用呢?

例如: 驱动接收到一些信息如何通知应用程序?

一般来说驱动基于事件来通知上层应用, 是一种惯用的手法. 

大体思路是我们创建一个事件.双方打开事件而通信.

一般就2种情况:

1在应用层创建好,然后在驱动层打开它.或者是通过ioctl 将Handle 传下去.

2 反之. 注意的是 如果在 驱动中创建好 在应用层打开注意一下权限.只读打开.  当然你也可以用 ioctl 把Handle 传到应用层.



注意:

1 不要在 DriverEntry 中 创建事件.

2 注意事件名称, 在层用层打开驱动层的 名称是  "Global\\xxxx"    而驱动层创建的名称是:L"\\BaseNamedObjects\\xxxx"





IoCreateNotificationEvent  和 IoCreateSynchronizationEvent 的区别在于 

前者是通知事件. 后者是同步事件. 前者需要手动重置. 后者则是自动. 

IoCreateSynchronizationEvent 遇到Waitxx 函数 就自动重置. 如果在多线程中只有一个线程可以得到信号.









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值