阅读:1521回复:5
驱动如何触发应用程序
想问一下驱动和应用程序通讯的问题。
我想在驱动和应用程序之间共享一个event事件。具体是这样。在驱动程序中生成一个event事件。应用线程被该事件阻塞。然后等待驱动的中断服务例程来击活这个event事件,应用程序继续运行。 我的程序是在98下。用driverworks写的。 那位高人麻烦指点一下。谢谢 //驱动程序 My9052Device::My9052Device(PDEVICE_OBJECT Pdo, ULONG Unit) : KPnpDevice(Pdo, &My9052Device_Guid) //在device的构造函数里声明kevent可以吗??? { KEvent* m_pSynchEvent = new (NonPagedPool) KEvent( KUstring(L\"\\\\BaseNamedObjects\\\\SynchEvent\"),SynchronizationEvent); m_pSynchEvent->Clear(); //在softice里看m_pSynchEvent不是NULL } BOOLEAN My9052Device::Isr_Irq(void) { m_pSynchEvent->Set();//通过中断触发event, } 在应用程序中: hEvent = OpenEvent(SYNCHRONIZE, FALSE, EVENT_NAME); //hEvent 是NULL,不知道是为什么?? 。。。。。。 ::WaitForSingleObject(Eventhandle,INFINITE); 。。。。。。 |
|
沙发#
发布于:2002-08-06 15:14
tigerzd写过一篇文章“怎样在驱动层和应用层建立准消息机制”,在专栏区的专题研究中,ID是http://www.driverdevelop.com/read.php?t=A&id=154,里面说得很明白了
|
|
|
板凳#
发布于:2002-08-05 09:11
Event应该在app中生成: 对,这样做才行。 如果要程序,写信给我。 |
|
|
地板#
发布于:2002-07-30 22:33
在文“Windows 9X硬件中断设备驱动程序的开发”有相应的说明……………… :)
|
|
地下室#
发布于:2002-07-30 17:26
Event应该在app中生成:
hEvent=CreateEvent(NULL,FALSE,FALSE,NULL) 然后通过DeviceIoControl传给Driver |
|
5楼#
发布于:2002-07-30 17:03
你的这种方法没有错呀!另外DriverWorks的例子里面有一个这样的程序,具体是什么忘了,是一个关于软驱的例子,就是这样实现的,你可以去查查!
|
|