surfing1
驱动牛犊
驱动牛犊
  • 注册日期2003-11-04
  • 最后登录2005-02-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1340回复:2

用DS编的PCI驱动,怎样实现实现应用程序与之实时的通信?

楼主#
更多 发布于:2004-08-03 09:42
    就是说应用程序往PCI口线上读数时,不采用查询机制,因为这样会耗费很多的CPU资源。在DDK中可以通过event机制来实现,我按照DDK的办法在DS编的驱动中试了,不成功.因为DS封装了DDK中的很多参数,DDK的代码实现中很多函数的参数在DS中不能使用.
    大家用DS编完驱动后,是怎样实现实现应用程序与之实时的通信的啊?有经验的XDJM们说说看吧,多谢大家了。
libin2309
驱动大牛
驱动大牛
  • 注册日期2002-11-20
  • 最后登录2005-12-29
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-08-03 10:09
在应用层设置事件对象,并初始化为非信号态,然后通过DEVICEIOCTL传递事件对象到驱动层,在驱动里需要设置事件对象的时候就可以设置了.

查驱动网上的帖子,以前有很多这样的帖子!
我是一只小小鸟,永远也飞也飞不高,但我永远在飞!
surfing1
驱动牛犊
驱动牛犊
  • 注册日期2003-11-04
  • 最后登录2005-02-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-08-03 13:15
是的,在DDK中要给事件定义一个注册的IOCTL,代码如下:
……
case IOCTL_MYDEVICE_REGISTER_EVENT: //注册Event变量
status = ObReferenceObjectByHandle(*(PHANDLE)pIrp->AssociatedIrp.SystemBuffer, EVENT_MODIFY_STATE, *ExEventObjectType,pIrp->RequestorMode, (PVOID*)&pdx->pWaitEvent, NULL);
……
可是这段代码在DS中无法使用,因为DS中pIrp已经封装成KIrp
了。
论坛里的相关的帖子,我都看过了,没有说到用怎么解决这个
问题的。
能具体说说怎么解决吗?或者贴段DS相关的代码吧,不胜感激!
游客

返回顶部