阅读:1462回复:4
硬件驱动程序完成一个IRP后,如何产生一个APP可以响应的事件?大家好,我是个刚刚学习WMD驱动程序开发的新手,同时也是刚开始学习VC6。现有问题向业内前辈请教! 从范例程序中,我看到APP与DRIVER通信,使用WRITERFILE()和READFILE(),即可通过IO管理器产生一个IRP,DRIVER在处理完这个IRP后,IoCompleteRequest例程会自动修改参数overlapped里面的成员变量hevent,APP可通过检查对应的hevent的值来判断某个IRP是否被执行。范例程序使用的检查方法是用循环进行检查,也许这是为了简化程序,以便新手理解,但这对于面象对象的APP编程来说,显然用循环是不合适的。那么如何令DRIVER处理完一个IRP后,能够产生一个用户事件来触发APP进行响应呢?在用VC写的APP中,如何定义这个事件呢? 如能解惑,不甚感激! 谢谢大家,谢谢驱动开发网! |
|
|
沙发#
发布于:2001-12-28 10:09
WriteFile/ReadFile的时候,app用overlapped传下去一个event的handle,然后waitforsingleobject。driver做完了,就setevent。
|
|
|
板凳#
发布于:2001-12-28 14:11
谢谢您回复。
但我的问题是如何在APP中定义用户事件。如果用wait......来等待HEVENT被置位,我感觉好象要用循环来检测它,我看到的范例程序就是用循环来做的。我不想用循环,想将IRP完成信息排入WINDOWS消息队列,自动触发APP执行消息处理。 谢谢! |
|
|
地板#
发布于:2001-12-29 13:59
在event没有被set之前,waitforsingleobject是不会返回的,根本不是什么“循环“。
你对vc太不熟悉,需要多实践。 |
|
|
地下室#
发布于:2002-07-17 16:09
建立事件和等待等代码可以到driverstudio 和msdn 中找
|
|