aretu
驱动牛犊
驱动牛犊
  • 注册日期2008-01-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分91分
  • 威望41点
  • 贡献值0点
  • 好评度12点
  • 原创分0分
  • 专家分0分
阅读:1431回复:4

event,消息,紧急求助!!

楼主#
更多 发布于:2008-03-04 09:43
刚学WINCE,遇到一个大难题。
1.驱动程序和应用程序通信,我在网上查了资料,说用得最多的是通过event,但是好像EVENT是用于
同一进程内的线程同步,驱动和应用程序之间怎么用,一直找不到,网上也讲的比较泛,应该不是驱动那边CreateEvent,应用程序WaitSigle..这么简单,希望不吝赐教~~!!感激不尽~!!!

2.就是应用程序A和应用程序B通信,好像通过消息队列通信,但是如果我A程序里面创建消息队列,
B读取消息队列的消息,但是B怎么得到创建消息队列的句柄呢??如果不是这样,应该怎样去设计啊,查了一些资料,好像都没有实列可参考,急~~~

整个WINCE是全内核模式的。应用程序是用EVC4写的。希望能指点,万分感谢~!!!
zymxmu
驱动牛犊
驱动牛犊
  • 注册日期2006-04-26
  • 最后登录2010-07-12
  • 粉丝0
  • 关注0
  • 积分160分
  • 威望54点
  • 贡献值0点
  • 好评度53点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-03-04 17:05
我来回答驱动和应用程序之间的通信。只要在驱动和应用程序中创建同名事件,如果是驱动触发应用程序,则在应用程序中建立线程等待,在驱动中setevent即可;如果是应用程序触发驱动,直接调用IOCTL就可以了。
aretu
驱动牛犊
驱动牛犊
  • 注册日期2008-01-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分91分
  • 威望41点
  • 贡献值0点
  • 好评度12点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-03-05 10:21
非常感谢楼上~!!
我还以为在应用程序里面创建的事件,因为和驱动是不同的进程,所以在驱动里面不能识别呢。如果是USB插入检测的话,那么我的是不是这么操作
在应用程序某处加上:
BOOL CreateThread( NULL, 0, NULL,fun,0 );
.......
fun
{
g_event=CreateEvent(0,FALSE,FALSE,eventname);
waitforsingleobject(g_event,0xffff);
}

然后再USB驱动某处加上
setevent(g_event);

但是怎么让驱动里面能识别ge_event呢
dding832
驱动牛犊
驱动牛犊
  • 注册日期2007-11-15
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分19分
  • 威望158点
  • 贡献值0点
  • 好评度24点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-03-22 12:01
应用程序和驱动之间的事件通讯时,应该得把这个事件的句柄传到对方进程中,然后再Waitfor_,和setevent吧
agt_2007
驱动牛犊
驱动牛犊
  • 注册日期2008-01-12
  • 最后登录2008-11-11
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望7点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2008-04-18 15:03
EVENT  是内核的!
游客

返回顶部