beaveror
驱动中牛
驱动中牛
  • 注册日期2002-06-13
  • 最后登录2003-07-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1453回复:13

为什么驱动的消息收不到?

楼主#
更多 发布于:2002-06-26 12:05
我在驱动中需要发消息的地方添加了
KeSetEvent(&keWrite, 2, FALSE);

在devicecontrol中添加了
case IOCTL_FIRST_SEND_EVENT:
 ObReferenceObjectByHandle((HANDLE)(*Buffer), 0x0002,
 NULL, UserMode,
 (PVOID *)(&keWrite),
  NULL );
  KeClearEvent(&keWrite);
  break;
//................

在应用层创建了线程监听。为什么在KeSetEvent()操作后应用层没有
收到事件?
只要能解决问题,就一定给分。 希望高手赐教!
beaveror
驱动中牛
驱动中牛
  • 注册日期2002-06-13
  • 最后登录2003-07-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-06-26 14:35
究竟有没有高手愿意告诉我呀。

很着急的说。
只要能解决问题,就一定给分。 希望高手赐教!
beaveror
驱动中牛
驱动中牛
  • 注册日期2002-06-13
  • 最后登录2003-07-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-06-27 10:22
typedef struct _FIRST_DEVICE_EXTENSION
{
PDEVICE_OBJECT fdo;
PDEVICE_OBJECT NextStackDevice;
UNICODE_STRING ifSymLinkName;
//HANDLE          hEvent;   //for Event send
KEVENT*          hEvent;

} FIRST_DEVICE_EXTENSION, *PFIRST_DEVICE_EXTENSION;


在DeviceControl中的处理:

PFIRST_DEVICE_EXTENSION dx =
            (PFIRST_DEVICE_EXTENSION)fdo->DeviceExtension;

switch( ControlCode)
//............................
case IOCTL_FIRST_SEND_EVENT:
         status = ObReferenceObjectByHandle(Buffer,
                                           0x0002,
  NULL,
  UserMode,
 (PVOID*)(&dx->hEvent),
 NULL);

KeClearEvent(dx->hEvent);
break;
//...................................


//..................在需要发生事件的地方加入..................
KeSetEvent( dx->hEvent, 2, FALSE);
//...........................

//......................应用层加入........................
HANDLE hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
if(!DeviceIoControl(hDevice, IOCTL_FIRST_SEND_EVENT,
                            &hEvent, sizeof(HANDLE),// input
   NULL, 0, // output
   &length,
   NULL))
        WaitForSingleObject(hEvent, INFINITE);
//..........................................        
应用层运行到waitforsingleobject前一句系统就重启了。

有高手帮帮忙看看。问题在什么地方。
只要能解决问题,就一定给分。 希望高手赐教!
hawie
驱动小牛
驱动小牛
  • 注册日期2002-05-30
  • 最后登录2004-02-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-06-27 10:51
爱莫能助。对EVENT所知甚少啊
hawie
驱动小牛
驱动小牛
  • 注册日期2002-05-30
  • 最后登录2004-02-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-06-27 10:52
爱莫能助。对EVENT所知甚少啊。那位大虾可以详细谈谈EVENT的来龙去脉?
aiherong
驱动牛犊
驱动牛犊
  • 注册日期2002-06-07
  • 最后登录2007-01-10
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-06-27 13:27
SetEvent()和ResetEvent()要配合使用
线程阻塞使用WaitForSingleObject()
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-06-27 13:32
你在用户态创建的事件句病是怎么让驱动的设备扩展得到的
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
beaveror
驱动中牛
驱动中牛
  • 注册日期2002-06-13
  • 最后登录2003-07-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-06-27 13:37
zydcat:
我是根据论坛上找到的例子,依葫芦画瓢的。具体的意思我也不动。
该怎么做啊,老大你把你的文章再发一遍吧。
只要能解决问题,就一定给分。 希望高手赐教!
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-06-27 14:05
sorry

找不到了

[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
beaveror
驱动中牛
驱动中牛
  • 注册日期2002-06-13
  • 最后登录2003-07-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-06-27 14:07
FAINT。劳驾老大,在思考思考啦。
只要能解决问题,就一定给分。 希望高手赐教!
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-06-27 14:13
好说好说

但是你让我思考什么呀

[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
beaveror
驱动中牛
驱动中牛
  • 注册日期2002-06-13
  • 最后登录2003-07-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-06-27 14:15
如何在驱动层建立事件,在应用层捕获消息。

我的信收到了吗?
只要能解决问题,就一定给分。 希望高手赐教!
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-06-27 14:29
受到了

回信了
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
horsedo
驱动小牛
驱动小牛
  • 注册日期2001-11-29
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
13楼#
发布于:2002-10-24 11:32
受到了

回信了

也给我们看看咧  :D
游客

返回顶部