阅读:1433回复:5
关于驱动中事件对象的问题?
我在驱动中这样写的,
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就蓝平的? |
|
沙发#
发布于:2005-02-25 16:09
1、GbEvt是否为NULL?
2、蓝屏时错误码是什么? 我在驱动中这样写的, |
|
|
板凳#
发布于:2005-02-26 21:26
你好AllenZh ,我定义的事件变量是PVOID类型的,可是到了KeSetEvent(GbEvt, 0, FALSE);一看GBEVT是void *类型的,不知道为什么的,对执行到KeSetEvent(GbEvt, 0, FALSE);时GBEVT是NULL的,谢谢。
|
|
地板#
发布于:2005-02-27 17:32
建议看看这个中的firewall
http://www.driverdevelop.com/forum/html_67763.html?1109496717 |
|
地下室#
发布于:2005-02-27 19:18
你好AllenZh ,我定义的事件变量是PVOID类型的,可是到了KeSetEvent(GbEvt, 0, FALSE);一看GBEVT是void *类型的,不知道为什么的,对执行到KeSetEvent(GbEvt, 0, FALSE);时GBEVT是NULL的,谢谢。 那你先调用KeInitializeEvent初始化事件 |
|
|
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); } |
|