阅读:1340回复:2
用DS编的PCI驱动,怎样实现实现应用程序与之实时的通信?
就是说应用程序往PCI口线上读数时,不采用查询机制,因为这样会耗费很多的CPU资源。在DDK中可以通过event机制来实现,我按照DDK的办法在DS编的驱动中试了,不成功.因为DS封装了DDK中的很多参数,DDK的代码实现中很多函数的参数在DS中不能使用.
大家用DS编完驱动后,是怎样实现实现应用程序与之实时的通信的啊?有经验的XDJM们说说看吧,多谢大家了。 |
|
沙发#
发布于:2004-08-03 10:09
在应用层设置事件对象,并初始化为非信号态,然后通过DEVICEIOCTL传递事件对象到驱动层,在驱动里需要设置事件对象的时候就可以设置了.
查驱动网上的帖子,以前有很多这样的帖子! |
|
|
板凳#
发布于: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相关的代码吧,不胜感激! |
|