阅读:2786回复:12
驱动程序和应用程序共享事件,为什么应用程序ResetEvent驱程程序中事件对象仍然显示信号态?
驱动程序和应用程序共享事件,为什么应用程序ResetEvent驱程程序中事件对象仍然显示信号态?
应用程序不能清除共享事件状态吗? |
|
|
沙发#
发布于:2002-04-17 21:27
faint!
兄弟你最好研究一下WMI |
|
|
板凳#
发布于:2002-04-17 21:31
兄弟,项目赶得紧哪,回头一定补上一课。
|
|
|
地板#
发布于:2002-04-17 22:20
兄弟,项目赶得紧哪,回头一定补上一课。 兄弟,其实我什么都不懂。我只知道用WMI可以从driver给应用发事件,挺好玩。 kao,老板现在又让我做什么8029的网卡驱动。我什么都不懂啊! 还不如让我用汇编写50K的代码爽呢! |
|
|
地下室#
发布于:2002-04-17 23:37
我以前试过,共用一个同步信号量对象,高层的应用程序跟低层的一样,都是正常的,在9x下用过高层和低层用事件对象进行同步,也没发现你说的问题呀。在高层创建一个事件对象,转换后传到低层,就可以正常完成同步了。
|
|
5楼#
发布于:2002-04-18 08:30
我以前试过,共用一个同步信号量对象,高层的应用程序跟低层的一样,都是正常的,在9x下用过高层和低层用事件对象进行同步,也没发现你说的问题呀。在高层创建一个事件对象,转换后传到低层,就可以正常完成同步了。 什么转换? |
|
|
6楼#
发布于:2002-04-18 08:43
是不是用OpenVxDHandle呀?
|
|
7楼#
发布于:2002-04-18 08:56
ObReferenceObjectByHandle
|
|
|
8楼#
发布于:2002-04-18 09:38
我是在驱动程序创建的事件(IoCreateNotificationEvent()),然后在应用程序OpenEvent()打开。
|
|
|
9楼#
发布于:2002-04-18 09:56
Despite the mechanism used, the driver and application will need a common method of synchronizing access to the shared buffer. This can be done in a variety of ways. Probably the simplest mechanism is sharing one or more named events. When an application calls CreateEvent(), the named event is automatically created in the Object Manager’s BaseNamedObjects directory. A driver can open, and share,
~~~~~~~~~~~~~~~ these event objects by calling IoCreateNotificationEvent(), ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ and specifying the same name as was specified in user mode (except, of course, specifying “\\BaseNamedObjects” as the directory). |
|
10楼#
发布于:2002-04-18 10:18
那按照我的方法(驱动程序创建事件,应用程序得到这个共享事件的句柄)从逻辑上和相关文档上来说也是可以的,可是我遇到以下问题:
应用程序调用OpenEvent()得到共享事件的句柄,只有将OpEvent的第一个参数置为SYNCHRONIZE才能得到成功得到,否则都失败。然而我想在应用程序将驱动程序设置的事件信号态恢复,去没有权限。我试图OpenEvent(SYNCHRONIZE|EVENT_MODIFY_STATE,EventName)失败。这是不是说应用程序共享驱动程序创建的事件只有访问的权限,而无Modify的权限?如果我想Modify它的话,则一定需要在应用程序CreateEvent ? |
|
|
11楼#
发布于:2002-04-18 10:54
没试过,我一直都在应用程序中Create。
试试吧,在驱动中Create一个Event,再查看一下: objdir /D \\BaseNamedObjects>c:\\ppp.txt 我想它的限制都在于访问权限,不会强制应用不能\"Write\" 驱动Event吧。 若仅仅是ACE的问题,作为Administrator改一下就行了 |
|
12楼#
发布于:2002-04-18 18:44
用户被禁言,该主题自动屏蔽! |
|