vancaho
驱动牛犊
驱动牛犊
  • 注册日期2004-04-26
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分574分
  • 威望100点
  • 贡献值0点
  • 好评度56点
  • 原创分0分
  • 专家分0分
阅读:2454回复:1

请教,KeSetEvent蓝屏

楼主#
更多 发布于:2007-04-18 21:03
我首先由应用层调用CreateEvent创建事件
SharedEvent = CreateEvent(NULL, TRUE, FALSE, "SharedEvent");
然后通过DeviceIoControl将事件名称发送到驱动
DeviceIoControl(DeviceDriver,
     IOCTL_OPEN_EVENT,
     NULL, 0,
     NULL, 0,
            &bytesReturned,
     NULL);
内核程序在IOCTL_OPEN_EVENT的处理中

HANDLE        SharedEventHandle = NULL;PKEVENT         SharedEvent   = NULL;
UNICODE_STRING       EventName;

       RtlInitUnicodeString(&EventName, L"\BaseNamedObjects\SharedEvent");
       SharedEvent = IoCreateNotificationEvent(&EventName, &SharedEventHandle);
       if (SharedEvent != NULL) {
              Status = STATUS_SUCCESS;
       } else {
              Status = STATUS_UNSUCCESSFUL;
       }

然后我想在IRP_MN_START_DEVICE事件发生的时候设置该事件
KeSetEvent(SharedEvent,0,FALSE);
大部分时候插入U盘时候正常,但是有的时候慧蓝屏
提示:IRQL_NOT_LESS_OR_EQUAL
请问怎么回事?
xiabl
驱动牛犊
驱动牛犊
  • 注册日期2005-10-24
  • 最后登录2010-05-20
  • 粉丝0
  • 关注0
  • 积分221分
  • 威望77点
  • 贡献值0点
  • 好评度71点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-04-27 17:12
If Wait is set to FALSE, the caller can be running at IRQL <= DISPATCH_LEVEL. Otherwise, callers of KeSetEvent must be running at IRQL PASSIVE_LEVEL and in a nonarbitrary thread context.
大概是这个意思吧, 不知道怎么用的
小桥流水人家
游客

返回顶部