lmycs
驱动牛犊
驱动牛犊
  • 注册日期2001-07-23
  • 最后登录2002-12-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2350回复:16

关于应用与驱动共享事件

楼主#
更多 发布于:2002-07-08 10:44
1,用CreateEvent()在应用创建事件a;
2,在驱动里用IoCreateNotificationEvent()打开“\\BaseNamedObjects\\\"下的a事件;
3,在win98下用2kddk编译连接都通过;
问题:当系统加载该驱动时发现没法加载,于是把IoCreateNotificationEvent函数删除后发现驱动能正常加载。
请教:是否在win98下没有提供IoCreateNotificationEvent这个函数?但在2kddk上没有指明该函数不支持win98。还有98下还有其他方法可以让应用和驱动共享事件么?

最新喜欢:

flyfoxflyfox
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-07-08 11:06
在应用层和内核层只需要一处create事件,然后open即可
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
bjab
驱动牛犊
驱动牛犊
  • 注册日期2002-04-06
  • 最后登录2011-06-07
  • 粉丝0
  • 关注0
  • 积分12分
  • 威望35点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-07-08 11:37
请问vxd下怎么共享事件?驱动程序能够等待事件吗?
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-07-08 11:41

可以,
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
bjab
驱动牛犊
驱动牛犊
  • 注册日期2002-04-06
  • 最后登录2011-06-07
  • 粉丝0
  • 关注0
  • 积分12分
  • 威望35点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-07-08 11:45
我在驱动程序中等待应用程序事件总不行,能否给个例子?谢谢!vxd
lmycs
驱动牛犊
驱动牛犊
  • 注册日期2001-07-23
  • 最后登录2002-12-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-07-08 11:45
我是想在应用中create然后在驱动中打开,但WIN98下驱动好象不能用IoCreateNotificationEvent ()这个函数,难道好有其他可用的函数么?
bjab
驱动牛犊
驱动牛犊
  • 注册日期2002-04-06
  • 最后登录2011-06-07
  • 粉丝0
  • 关注0
  • 积分12分
  • 威望35点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-07-08 12:42
zydcat老大,帮个忙吧!
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-07-08 12:51
我是想在应用中create然后在驱动中打开,但WIN98下驱动好象不能用IoCreateNotificationEvent ()这个函数,难道好有其他可用的函数么?

98下用DeviceIoControl的OVERLAPPED带的Event参数可以实现同样的功能。
犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
lmycs
驱动牛犊
驱动牛犊
  • 注册日期2001-07-23
  • 最后登录2002-12-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
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
zhangyl
驱动牛犊
驱动牛犊
  • 注册日期2001-07-18
  • 最后登录2009-03-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-07-08 13:19
可以的,把Mail留下
签名是什么?
lmycs
驱动牛犊
驱动牛犊
  • 注册日期2001-07-23
  • 最后登录2002-12-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-07-08 13:21
lmycs@21cn.com
谢谢!
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-07-08 13:23
zydcat老大,帮个忙吧!


找arthurt,他是牛人
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-07-08 14:32
1,用CreateEvent()在应用创建事件a;
2,在驱动里用IoCreateNotificationEvent()打开“\\BaseNamedObjects\\\"下的a事件;
3,在win98下用2kddk编译连接都通过;
问题:当系统加载该驱动时发现没法加载,于是把IoCreateNotificationEvent函数删除后发现驱动能正常加载。
请教:是否在win98下没有提供IoCreateNotificationEvent这个函数?但在2kddk上没有指明该函数不支持win98。还有98下还有其他方法可以让应用和驱动共享事件么?

IoCreateNotificationEvent在应用程序和驱动程序之间共享命名事件对象直到NT4.0才被支持,所以98中不被支持,不要枉费心机了。
你可以通过其它的方式,本站很多关于此话题很有建设性的论题,你可以以\"共享事件\"为关键字搜索一下。
Tom_lyd
zjg1603
驱动牛犊
驱动牛犊
  • 注册日期2002-06-27
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
13楼#
发布于:2002-07-08 22:28
可以在用户程序中定义一个Event,然后利用IOCTL将其指针传递到驱动程序,驱动程序就可以使用了
wwqq012
驱动牛犊
驱动牛犊
  • 注册日期2002-02-17
  • 最后登录2005-03-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-07-09 09:16
zjg1603的方法可行,我就是这么做的
就是driverstudio中的第二种方法
lmycs
驱动牛犊
驱动牛犊
  • 注册日期2001-07-23
  • 最后登录2002-12-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2002-07-09 10:50
可以在用户程序中定义一个Event,然后利用IOCTL将其指针传递到驱动程序,驱动程序就可以使用了

的确可以,我试过可以这样了。用ObReferenceObjectByHandle把传进的event句柄转化为指向他的指针。但有点不明白,因为在应用中event等内核对象的句柄不是相对这个应用而言的指向内核对象的一个索引号吗 ?该索引在其他应用中应是无效的的吧?驱动通过它竟能找到event的地址,确实令我不解。
xdjm
驱动中牛
驱动中牛
  • 注册日期2001-04-02
  • 最后登录2024-01-25
  • 粉丝0
  • 关注0
  • 积分34分
  • 威望25点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
  • 社区居民
16楼#
发布于:2002-07-09 12:20
句柄并不是一个简单的索引,句柄到指针的映射是由对象管理器来完成的,它通过一个三层的表格来检索,最终检索到相应对象的对象头指针。句柄是跟进程相关的,就跟虚拟地址一样,是进程特定的。
游客

返回顶部