baggio081
驱动牛犊
驱动牛犊
  • 注册日期2007-06-12
  • 最后登录2008-02-20
  • 粉丝0
  • 关注0
  • 积分440分
  • 威望45点
  • 贡献值0点
  • 好评度44点
  • 原创分0分
  • 专家分0分
阅读:1839回复:7

怎么判断r3和r0创建的是同一个事件?

楼主#
更多 发布于:2007-07-25 11:33
在r3创建了一个事件对象Event
hEvent=CreateEvent(NULL,TRUE,FALSE,"Event");
WaitForSingleObject(hEvent,waitTime);

然后想在驱动里想打开此Event,然后激活它,达到从驱动通知r3的目的,
UNICODE_STRING  nameEvent;
HANDLE  hEvent=NULL;
PKEVENT  Event;
RtlInitUnicodeString ( &nameEvent, L"\\BaseNamedObjects\\Event" );
Event = IoCreateSynchronizationEvent (&nameEvent,  &hEvent);
rc = KeSetEvent(Event,0,FALSE );

根据rc的值判断KeSetEvent成功执行了,但是r3却等待超时,是不是r3和r0使用的不是一个事件?
还是在r0打开r3的事件时使用的名称"\\BaseNamedObjects\\Event"有问题?
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2007-07-25 15:21
RING3句柄 ,RING0指针。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
baggio081
驱动牛犊
驱动牛犊
  • 注册日期2007-06-12
  • 最后登录2008-02-20
  • 粉丝0
  • 关注0
  • 积分440分
  • 威望45点
  • 贡献值0点
  • 好评度44点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-07-25 17:07
引用第1楼wowocock于2007-07-25 15:21发表的  :
RING3句柄 ,RING0指针。

就是看比较r3的hEvent和r0 的hEvent吗?
但是地址不一样的..
GNiDiA
驱动小牛
驱动小牛
  • 注册日期2006-10-11
  • 最后登录2017-10-09
  • 粉丝0
  • 关注0
  • 积分1002分
  • 威望145点
  • 贡献值0点
  • 好评度124点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2007-07-25 21:34
winobj看看名字,如果是同一个事件,就只有一个名字
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-07-25 21:50
The preferred method to share event objects between user mode and kernel mode is for the user-mode program to create the event object and pass it to the driver through an IOCTL
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
5楼#
发布于:2007-07-26 08:51
无所谓谁创建,不过一般来说应用创建,驱动获得其指针比较容易,不用考虑对象空间的问题,如果在驱动创建,应用使用,则必须在BASENAMEOBJECTS 下创建,才行,不然应用不能访问,当然还得考虑权限,在VISTA后还得考虑不同SESSION 的情况==,所以。。。。。。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
wangjianfeng
驱动小牛
驱动小牛
  • 注册日期2004-05-28
  • 最后登录2013-10-02
  • 粉丝0
  • 关注0
  • 积分1002分
  • 威望263点
  • 贡献值0点
  • 好评度260点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-07-26 10:57
看来是由R3将句柄以指针方式传弟HANDLE,然后R0 ObReferenceObjectByHandle这样比较保险.
baggio081
驱动牛犊
驱动牛犊
  • 注册日期2007-06-12
  • 最后登录2008-02-20
  • 粉丝0
  • 关注0
  • 积分440分
  • 威望45点
  • 贡献值0点
  • 好评度44点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-07-26 17:33
明白了,用winobj看了一下,创建的是同一个事件..
但是还是r3还是收不到消息....
游客

返回顶部