阅读:2349回复:16
关于应用与驱动共享事件
1,用CreateEvent()在应用创建事件a;
2,在驱动里用IoCreateNotificationEvent()打开“\\BaseNamedObjects\\\"下的a事件; 3,在win98下用2kddk编译连接都通过; 问题:当系统加载该驱动时发现没法加载,于是把IoCreateNotificationEvent函数删除后发现驱动能正常加载。 请教:是否在win98下没有提供IoCreateNotificationEvent这个函数?但在2kddk上没有指明该函数不支持win98。还有98下还有其他方法可以让应用和驱动共享事件么? |
|
最新喜欢:![]() |
沙发#
发布于:2002-07-08 11:06
在应用层和内核层只需要一处create事件,然后open即可
|
|
|
板凳#
发布于:2002-07-08 11:37
请问vxd下怎么共享事件?驱动程序能够等待事件吗?
|
|
地板#
发布于:2002-07-08 11:41
可以, |
|
|
地下室#
发布于:2002-07-08 11:45
我在驱动程序中等待应用程序事件总不行,能否给个例子?谢谢!vxd
|
|
5楼#
发布于:2002-07-08 11:45
我是想在应用中create然后在驱动中打开,但WIN98下驱动好象不能用IoCreateNotificationEvent ()这个函数,难道好有其他可用的函数么?
|
|
6楼#
发布于:2002-07-08 12:42
zydcat老大,帮个忙吧!
|
|
7楼#
发布于:2002-07-08 12:51
我是想在应用中create然后在驱动中打开,但WIN98下驱动好象不能用IoCreateNotificationEvent ()这个函数,难道好有其他可用的函数么? 98下用DeviceIoControl的OVERLAPPED带的Event参数可以实现同样的功能。 |
|
|
8楼#
发布于:2002-07-08 13:18
谢谢tigerzd的提点。
我找到一篇关于这方面文章了: http://www.microsoft.com/msj/defaultframe.asp?page=/msj/0799/nerd/nerd0799.htm&nav=/msj/0799/newnav.htm |
|
9楼#
发布于:2002-07-08 13:19
可以的,把Mail留下
|
|
|
10楼#
发布于:2002-07-08 13:21
lmycs@21cn.com
谢谢! |
|
11楼#
发布于:2002-07-08 13:23
zydcat老大,帮个忙吧! 找arthurt,他是牛人 |
|
|
12楼#
发布于:2002-07-08 14:32
1,用CreateEvent()在应用创建事件a; IoCreateNotificationEvent在应用程序和驱动程序之间共享命名事件对象直到NT4.0才被支持,所以98中不被支持,不要枉费心机了。 你可以通过其它的方式,本站很多关于此话题很有建设性的论题,你可以以\"共享事件\"为关键字搜索一下。 |
|
|
13楼#
发布于:2002-07-08 22:28
可以在用户程序中定义一个Event,然后利用IOCTL将其指针传递到驱动程序,驱动程序就可以使用了
|
|
14楼#
发布于:2002-07-09 09:16
zjg1603的方法可行,我就是这么做的
就是driverstudio中的第二种方法 |
|
15楼#
发布于:2002-07-09 10:50
可以在用户程序中定义一个Event,然后利用IOCTL将其指针传递到驱动程序,驱动程序就可以使用了 的确可以,我试过可以这样了。用ObReferenceObjectByHandle把传进的event句柄转化为指向他的指针。但有点不明白,因为在应用中event等内核对象的句柄不是相对这个应用而言的指向内核对象的一个索引号吗 ?该索引在其他应用中应是无效的的吧?驱动通过它竟能找到event的地址,确实令我不解。 |
|
16楼#
发布于:2002-07-09 12:20
句柄并不是一个简单的索引,句柄到指针的映射是由对象管理器来完成的,它通过一个三层的表格来检索,最终检索到相应对象的对象头指针。句柄是跟进程相关的,就跟虚拟地址一样,是进程特定的。
|
|