首页
社区
课程
招聘
[求助]驱动跟应用层事件通信
发表于: 2009-10-23 17:27 4377

[求助]驱动跟应用层事件通信

2009-10-23 17:27
4377
EVENT* m_Event =(EVENT*)malloc(sizeof(EVENT));
	m_Event->UserEvent= CreateEvent(NULL,
							false,
							false,
							NULL);
	m_Event->KernelEvent= CreateEvent(NULL,
							  false,
							  false,
							  NULL);
	if( (m_Event->UserEvent ==INVALID_HANDLE_VALUE )||( m_Event->KernelEvent == INVALID_HANDLE_VALUE))
	{
		MessageBox(NULL,"Create Event","error",MB_OK);
	}
	SendIrp(IOCTL_EVENT1,(void*)m_Event,sizeof(EVENT),NULL,0,driverlink);
	MessageBox(NULL,"Thread1","120",MB_OK);

应用层创建事件均成功
发送到驱动IRP,ObReferenceObjectByHandle一个事件成功  一个失败
	EVENT* s =(EVENT*)ExAllocatePool(NonPagedPool,sizeof(EVENT));
			memcpy((void*)s,pIoBuffer,sizeof(EVENT));
			ObReferenceObjectByHandle(s->UserEvent,GENERIC_ALL,NULL,KernelMode,&UserWaitEvent,NULL);
			status=ObReferenceObjectByHandle(s->KernelEvent,GENERIC_ALL,NULL,KernelMode,&KernelWaitEvent,NULL);
			if( !NT_SUCCESS( status ))
			KdPrint(("[GetFunctionAddress] Event error2\n"));
			KdPrint(("[GetFunctionAddress] ntstatus = 0x%x\n", status));
			ExFreePool(s);

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
2
百思不得其解
2009-10-23 17:28
0
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
3
typedef struct _EVENT{
        HANDLE UserEvent;
        HANDLE KernelEvent;
}EVENT,*PEVENT;
2009-10-23 17:28
0
雪    币: 522
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
百思不行,以后遇到问题得千思。^_^
2009-10-23 22:04
0
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
5
UserWaitEvent是这个吗?这是我定义的内核对象
2009-10-24 00:20
0
雪    币: 522
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
你把那个常数换成0试试
2009-10-24 08:37
0
游客
登录 | 注册 方可回帖
返回
//