4428|14

71

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

驱动中等待多个事件的问题 [复制链接]

各位好~
有个问题想跟大家讨论下:
在CE下,驱动中能否使用WaitForMultipleObjects来等待多个中断事件?

前些天记得有个帖子说过,驱动中不能用WaitForMultipleObjects来等待多个事件,实际上我也试了下,没有成功,情况是这样的:
1.用两个IRQ中断申请了两个系统中断,用KernelIoControl;
2.创建两个事件,用InterruptInitialize;
3.创建线程,并在线程中使用WaitForMultipleObjects等待第二步中创建的事件;

结果是,线程启动的时候,由于没有等待的时间发生,线程阻塞,但是当第一次触发事件(外部中断产生)时,WaitForMultipleObjects就一直返回WAIT_FAILED

难道在中断中不能使用WaitForMultipleObjects来等待多个中断么?能说说理由么?WaitForMultipleObjects应该是OS提供的API,况且驱动是加载到Device进程中在用户空间运行的啊,为什么不行呢?还是用法有误?请各位分析~

拜~

最新回复

MARK  详情 回复 发表于 2009-7-27 16:14
点赞 关注

回复
举报

65

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
1. Driver 中要用 WaitForMultipleObjects 去等非中斷事件是沒有限制的.

2. 但 IST 中的 InterruptInitialize 所使用的 Event, 是只能使用 WaitForSingleObject, 你可參考 http://msdn.microsoft.com/en-us/library/ms885677.aspx 中有一句
"The hEvent parameter can only be used in a WaitForSingleObject call to wait for the event to be triggered by the kernel."

所以這是 WindowsCE 的限制

Paul, Chao @ Techware
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
用法不正确。看看别人驱动里面怎么用的就行了。
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

4
 
引用 1 楼 paul_chao 的回复:
1. Driver 中要用 WaitForMultipleObjects 去等非中斷事件是沒有限制的.

2. 但 IST 中的 InterruptInitialize 所使用的 Event, 是只能使用 WaitForSingleObject, 你可參考 http://msdn.microsoft.com/en-us/library/ms885677.aspx 中有一句
"The hEvent parameter can only be used in a WaitForSingleObject call to wait for the event to be triggered by the kernel."

所以這是 WindowsCE 的限制

Paul, Chao @…


补充Paul, Chao 老牛。

这个东西我后来才明白,Paul, Chao 牛人说的很对。

WaitForMultipleObjects 可以用来等待几个事件,任何一个事件都可以触发它

楼主你看看背光驱动就用到这个WaitForMultipleObjects 了。
通常在不同的驱动中使用setevent来和WaitForMultipleObjects 合作
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 3 楼 gooogleman 的回复:
引用 1 楼 paul_chao 的回复:
1. Driver 中要用 WaitForMultipleObjects 去等非中斷事件是沒有限制的.

2. 但 IST 中的 InterruptInitialize 所使用的 Event, 是只能使用 WaitForSingleObject, 你可參考 http://msdn.microsoft.com/en-us/library/ms885677.aspx 中有一句
"The hEvent parameter can only be used in a WaitForSingleObject call to wait for the event to be triggered by the kernel."


所以這是 Wind…


我认为第二条相当关键, 学习了。实际上 WinCE 把多个物理中断关联到同一个IST中采用了另一套机制。
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(中级)

6
 
引用 1 楼 paul_chao 的回复:
1. Driver 中要用 WaitForMultipleObjects 去等非中斷事件是沒有限制的.

2. 但 IST 中的 InterruptInitialize 所使用的 Event, 是只能使用 WaitForSingleObject, 你可參考 http://msdn.microsoft.com/en-us/library/ms885677.aspx 中有一句
"The hEvent parameter can only be used in a WaitForSingleObject call to wait for the event to be triggered by the kernel."

所以這是 WindowsCE 的限制

Paul, Chao @ Tec…

拜~
Paul老大,一针见血,再拜~呵呵

我也是看背光驱动里有用才用的;不过背光驱动力的事件不是用InterruptInitialize 关联的;

这下明白了,官方有说法的;呵呵~

 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

7
 
其实楼主可以多个中断绑定同一个线程啊。比如触摸屏驱动,就是AD中断和定时器中断绑定在一个线程的。
 
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用 6 楼 gooogleman 的回复:
其实楼主可以多个中断绑定同一个线程啊。比如触摸屏驱动,就是AD中断和定时器中断绑定在一个线程的。

请赐教,具体说说是怎么等待事件的?
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

9
 
引用 6 楼 gooogleman 的回复:
其实楼主可以多个中断绑定同一个线程啊。比如触摸屏驱动,就是AD中断和定时器中断绑定在一个线程的。

通过CreateEvent的第四个参数吧?
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

10
 
mark、学习下。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

11
 
guanzhu
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

12
 
貌似可以使用它来等待多个事件,但其中任何一个就可以触发唤醒吧。
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

13
 
等待事件?

——你的背光驱动没有吗?我就照着背光驱动就可以了。

至于多个中断绑定同一个线程,你看看2440触摸屏驱动(线程初始化在微软代码下面,你找来看看就什么都明白了,看书中,就不帖代码了。)
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

14
 
2. 但 IST 中的 InterruptInitialize 所使用的 Event, 是只能使用 WaitForSingleObject, 你可參考 http://msdn.microsoft.com/en-us/library/ms885677.aspx 中有一句
"The hEvent parameter can only be used in a WaitForSingleObject call to wait for the event to be triggered by the kernel."

经典.....

至于多个中断绑定同一个线程,你看看2440触摸屏驱动(线程初始化在微软代码下面,你找来看看就什么都明白了,看书中,就不帖代码了。)
没有代码,应该就是用同一个事件,但是seteventdata的参数不一样.
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

15
 
MARK
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表