kalrey
驱动牛犊
驱动牛犊
  • 注册日期2009-07-05
  • 最后登录2009-10-05
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1152回复:0

应用层传递进来的事件对象无法设置受信状态

楼主#
更多 发布于:2009-08-20 23:07
该事件对象是由用户空间创建的::CreateEvent(NULL, FALSE, FALSE, NULL);
然后通过DeviceIoControl将句柄传递给驱动,驱动中获取对象:
ObReferenceObjectByHandle(*pEvent, EVENT_MODIFY_STATE, *ExEventObjectType, KernelMode, (PVOID*)g_pEvent, NULL);返回为真,而且我查看了该对象指针,里面确实有数据其中的g_pEvent是在驱动中的全局变量,是一个PKEVENT 的数组。
      但是在我的一个挂钩的内核函数中:
使用KeSetEvent(g_pEvent[0], IO_NO_INCREMENT, FALSE);却无法设置受信状态,我用WinDbg查看了KEVENT结构,里面的SignedStats始终为0.。。
      请问为什么会出现这样的情况,我没使用DereferenceObject释放对象,因为要全局使用,所以没用这个释放,不知道和这个有关系没。其他的地方我就不知道有什么不恰当的操作 ,请各位指点一下,网上都没看到相关的问题描述,而面对这样的问题,我甚至不知道该如何切入下手,我找不到任何切入点
      XP SP2系统,谢谢各位了
游客

返回顶部