我在应用程序中和驱动中各创建一个事件对象。然后在应用程序中创建新线程并阻塞等待驱动置位事件,驱动置位事件后,则转入阻塞等待。具体代码如下:应用程序中:unsigned ThreadId; DWORD BytesReturned;//获得设备句柄 hDevice=Creat...
全文
回复(8) 2007-03-12 20:21 来自版块 - 内核编程
表情
troylees噢,明白了!!非常感谢你的提醒。现在驱动和应用的双事件通知问题应该算解决了。 不过,我还是搞不清楚在驱动创建的事件,应用程序怎么样才能使用。 感谢大家的关注。谢谢!!(2007-03-15 13:08)
rayyang2000引用第6楼troylees于2007-03-14 17:15发表的“”: 噢,忘记写了,线程中会发一个IRP,让驱动自己去唤醒它。不过为了方便测试,我改为手工按钮执行。我本意是在线程中直接唤醒它的,但是好像驱动创建的事件,应用使用不了,但pjf以前说过是可以的,我用他的代码好像也...(2007-03-15 06:24)
troylees噢,忘记写了,线程中会发一个IRP,让驱动自己去唤醒它。不过为了方便测试,我改为手工按钮执行。我本意是在线程中直接唤醒它的,但是好像驱动创建的事件,应用使用不了,但pjf以前说过是可以的,我用他的代码好像也实现不了,以下是他的代码的连接: http://bbs.driverdev...(2007-03-14 15:15)
troylees经过测试,正如你说的,KeWaitxxx会调用到xxOpenKey函数,所以才有这样的情况,其他的函数却没有问题。非常感谢你的回答!!(2007-03-14 15:07)
tooflat谁来signal pEventDrv ???(2007-03-14 14:07)
rayyang2000曾经在开发中看到KeWaitxxx也会去操作registry,虽然不清楚是否一定是RegOpenKey。。。(2007-03-14 06:43)
troylees我hook了RegOpenKey来测试一下,因为RegOpenKey调用频繁,所以我用了KeWaitForMutexObject互斥进入。 对于你的第2个问题,如果把以下注释掉的话,其他一切都是正常的,MessageBox也弹出来了 <<<<<<...(2007-03-13 14:12)
rayyang2000可能是deadlock,你hook的是什么函数? 另外,在user-mode thread中用MessageBox好像有问题,记得MSDN上曾经看到说只能在main thread中做GUI操作。(2007-03-13 08:05)

返回顶部