edbert
驱动牛犊
驱动牛犊
  • 注册日期2003-04-26
  • 最后登录2012-08-11
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望26点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
阅读:1086回复:2

请教一个问题

楼主#
更多 发布于:2003-10-26 18:02
各位大侠:
    小生在此请教一个问题:
    用户应用程序(APP)可以通过CreateFile /WriteFile /DeviceIoControl 直接向驱动程序(DRV)发送命令;那么,DRV能否直接向APP 发送命令或消息?比如,通知APP:缓冲区有了新数据,快来取,并且在显示窗口更新显示!(如果这些工作不用APP定时查询的话)。如果可以,该如何实现?
hhm
edbert
驱动牛犊
驱动牛犊
  • 注册日期2003-04-26
  • 最后登录2012-08-11
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望26点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-10-28 09:49
给我了一个思路,虽然我还看不大明白,期待着您的进一步解释,但仍然是非常感谢。
hhm
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
板凳#
发布于:2003-10-27 09:57
可以,通过命名的事件/信号量对象来实现双向唤醒
调用CreateSemaphore创建一个命名信号量Hookopen并设为无信号状态,同时调用CreateThread创建一个线程。线程代码的入口处通过调用WaitForSingleObject在此信号量上等待被ring0钩子函数唤查。
驱动程序这边则在初始化过程中通过未公开的例程ObReferenceObjectByName(\\BaseNamedObjects\\Hookopen)得到命名信号量对象Hookopen的指针,当它拦截到文件打开请求时调用KeReleaseSemaphore将Hookopen置为有信号状态唤醒ring3级等待检查打开文件的线程。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
游客

返回顶部