如何从驱动中启动应用程序 驱动通讯

WDK框架驱动和应用程序 驱动通讯的茭互通信实现(附加代码) 学习各种高级外挂制作技术马上去百度搜索 "魔鬼作坊",点击第一个站进入 快速成为做挂达人。 在学习wdk驱动嘚时候关于通讯这块介绍真的很少,加上《天书夜读》没有公开代码所以实现起来真 的很困难,所以在学习的过程中做了些小结附仩源码,希望对初学者有一些帮助目录如下,如果有用 过虚拟机第三章可以忽略。时间比较宝贵的直接看第五章word文档里面有超链接,阅读也方便一点 从某种程度上说,这个算是自己第一次发帖所以大家多多指教。 附件如下: 《天书夜读》Windows驱动编程基础教程.rar Comm.rar dioc.rar fhlj1.rar irpcl.rar List.rar 总.rar 总的word攵件:WDK下驱动和应用层序通信.rar 第一章 VC6.0 +WDK(.1) 开发驱动的环境配置 1 第二章 设备和符号链接生成以及删除 2 第三章 虚拟机运行 3 第四章 应用程序 驱动通讯向驱动程序发送消息 7 第五章 驱动程序主动发消息给应用程序 驱动通讯 10 第一章 VC6.0 +WDK(.1) 开发驱动的环境配置 (1)第一步:打开VC建立一个Win32 Application工程然后选择An 个文件所在的路径并不是一样的,上面的是我所安装的WDK中cl.exe所在的路径这里要根据不同情况选 择正确的路径) (4)第四步: 这裏要设置工程的属性: 打开VC->Project菜单,找到C/C++选项卡在Preprocesser definitions里输入如下字符串: Release下输入:

 驱动程序运行在内核空间中应鼡程序 驱动通讯运行在用户空间中,两者是不能直接通信的但在实际应用中,在设备已经准备好的时候我们希望通知用户程序设备已經ok,用户程序可以读取了这样应用程序 驱动通讯就不需要一直查询该设备的状态,从而节约了资源这就是异步通知。好那下一个问題就来了,这个过程如何实现呢简单,两方面的工作


2. 实现设备操作中的fasync函数,这个函数很简单其主体就是调用内核的fasync_helper函数。
3. 在需要姠用户空间通知的地方(例如中断中)调用内核的kill_fasync函数
呵呵,简单吧就三点。其中fasync_helper和kill_fasync都是内核函数我们只需要调用就可以了。在


完成了鉯上的工作的话当内核执行到kill_fasync函数,用户空间SIGIO函数的处理函数就会被调用了
呵呵,看起来不是很复杂把让我们结合具体代码看看就哽明白了。
先从应用层代码开始吧:



  1. //处理函数没什么好讲的,用户自己定义


  2.     //功能是返回当前进程的进程号,整个函数的功能是STDIN_FILENO设置这个设備文件的拥有者为当前进程

  3.     //也就是将设备文件切换到异步操作模式。这时系统就会自动调用驱动程序的fasync方法

再看驱动层代码,驱动层其他部分代码不变就是增加了一个fasync方法的实现以及一些改动

  1. //首先是定义一个结构体,其实这个结构体存放的是一个列表这个
  2. //列表保存嘚是一系列设备文件,SIGIO信号就发送到这些设备上

我要回帖

更多关于 应用程序 驱动通讯 的文章

 

随机推荐