yaoyu
驱动中牛
驱动中牛
  • 注册日期2002-08-14
  • 最后登录2009-11-28
  • 粉丝0
  • 关注0
  • 积分1005分
  • 威望350点
  • 贡献值2点
  • 好评度295点
  • 原创分0分
  • 专家分0分
阅读:1433回复:5

关于驱动中事件对象的问题?

楼主#
更多 发布于:2005-02-24 20:15
我在驱动中这样写的,
PVOID GbEvt=NULL;定义一个事件

在抓包的函数中写的,
if(!KeReadStateEvent(GbEvt)){

//复制数据到共享内存
memset(SysVirtualAddress, 0, BUFFER_LENGTH);
//packetbuffer是包的一个结构
memcpy(SysVirtualAddress, (void *)&PacketBuffer, sizeof(PACKET_BUFFER));

KeSetEvent(GbEvt, 0, FALSE);
}
为什么一执行到if(!KeReadStateEvent(GbEvt))这时就蓝平的,如果把这句注释掉到KeSetEvent(GbEvt, 0, FALSE)时也蓝平的,不知道为什么一碰到事件对象GbEvt就蓝平的?
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-02-25 16:09
1、GbEvt是否为NULL?
2、蓝屏时错误码是什么?

我在驱动中这样写的,
PVOID GbEvt=NULL;定义一个事件

在抓包的函数中写的,
if(!KeReadStateEvent(GbEvt)){

//复制数据到共享内存
memset(SysVirtualAddress, 0, BUFFER_LENGTH);
//packetbuffer是包的一个结构
memcpy(SysVirtualAddress, (void *)&PacketBuffer, sizeof(PACKET_BUFFER));

KeSetEvent(GbEvt, 0, FALSE);
}
为什么一执行到if(!KeReadStateEvent(GbEvt))这时就蓝平的,如果把这句注释掉到KeSetEvent(GbEvt, 0, FALSE)时也蓝平的,不知道为什么一碰到事件对象GbEvt就蓝平的?
 
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
yaoyu
驱动中牛
驱动中牛
  • 注册日期2002-08-14
  • 最后登录2009-11-28
  • 粉丝0
  • 关注0
  • 积分1005分
  • 威望350点
  • 贡献值2点
  • 好评度295点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-02-26 21:26
你好AllenZh ,我定义的事件变量是PVOID类型的,可是到了KeSetEvent(GbEvt, 0, FALSE);一看GBEVT是void *类型的,不知道为什么的,对执行到KeSetEvent(GbEvt, 0, FALSE);时GBEVT是NULL的,谢谢。

 
wfine
驱动牛犊
驱动牛犊
  • 注册日期2004-08-15
  • 最后登录2005-06-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-02-27 17:32
建议看看这个中的firewall
http://www.driverdevelop.com/forum/html_67763.html?1109496717
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-02-27 19:18
你好AllenZh ,我定义的事件变量是PVOID类型的,可是到了KeSetEvent(GbEvt, 0, FALSE);一看GBEVT是void *类型的,不知道为什么的,对执行到KeSetEvent(GbEvt, 0, FALSE);时GBEVT是NULL的,谢谢。

 
 

那你先调用KeInitializeEvent初始化事件
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
yaoyu
驱动中牛
驱动中牛
  • 注册日期2002-08-14
  • 最后登录2009-11-28
  • 粉丝0
  • 关注0
  • 积分1005分
  • 威望350点
  • 贡献值2点
  • 好评度295点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-02-27 21:59
你好wfine我就是看那个例子的,那个例子上运行挺好的,可是一到我的HOOK NDIS里就不性的,AllenZh你好,我是应该这么写吗:
PVOID GbEvt=NULL;定义一个事件

在抓包的函数中写的,
***************************************
KeInitializeEvent(GbEvt,SynchronizationEvent, FALSE);
***************************************
if(!KeReadStateEvent(GbEvt)){

//复制数据到共享内存
memset(SysVirtualAddress, 0, BUFFER_LENGTH);
//packetbuffer是包的一个结构
memcpy(SysVirtualAddress, (void *)&PacketBuffer, sizeof(PACKET_BUFFER));

KeSetEvent(GbEvt, 0, FALSE);
}
游客

返回顶部