kittylh
驱动牛犊
驱动牛犊
  • 注册日期2002-04-16
  • 最后登录2004-01-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1066回复:6

中断和DPC选择的问题

楼主#
更多 发布于:2002-12-09 16:44
一个PCI设备的WDM驱动,有两中情况分别会引起中断,并且需要不同的处理,一个是写,一个是读。我不知道采用以下哪种方案好一些,请大虾们指点:

方案1:写两个DPC,在ISR中判断进哪个DPC,然后调用不同DPC。
       如果用此方案,假如在DPC还没有执行或者没有执行完时,又来中断,书上说后来的DPC会被拒绝,又说如果中断发生的间隔很短的话,DPC可能运行两次(Chris Cant Windows WDM设备驱动程序开发指南P291),我有些迷惑。
       还有基本DPC对象和CUSTOM DPC有什么不同,为什么调用函数都不一样。

方案2:只用一个DPC,在ISR中根据不同中断设置设备扩展中不同标志位,在DPC中根据标志位来决定做什么操作。
       假如写DPC等待执行过程中又来读操作的中断,进ISR,设置读中断标志位,调用DPC,被拒绝。那么当已经排队的那个DPC执行时,其FDO参数的设备扩展中相应于后一个读中断的位应该是多少呢?

最新喜欢:

mapoflmapofl
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-12-09 18:58
用一个足够了
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
kittylh
驱动牛犊
驱动牛犊
  • 注册日期2002-04-16
  • 最后登录2004-01-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-12-09 19:49
用一个足够了


那么当一个DPC没有解决,第二个中断又来了的问题怎么办?
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-12-10 21:38
[quote]用一个足够了


那么当一个DPC没有解决,第二个中断又来了的问题怎么办?
 [/quote]

你的中断速度有多快,担心这样

你可以在dpc的最后在开启中断标志
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
kittylh
驱动牛犊
驱动牛犊
  • 注册日期2002-04-16
  • 最后登录2004-01-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-12-10 21:52
中断倒不一定很频繁,但是时间不确定,我怕它来的不是时候,导致应有的读操作未做。应用一个DPC试试看吧。

兵马桶上的那位可是你?  :D
lyz_killer
驱动牛犊
驱动牛犊
  • 注册日期2002-11-30
  • 最后登录2009-02-08
  • 粉丝0
  • 关注0
  • 积分33分
  • 威望33点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-12-11 01:09
用一个dpc就可以了!!你可以在需要的时候插入一个dpc队列
我做的板子同时处理4个中断,都没有问题!!放心使用好了!!祝你好运!!朋友!



有用的话别忘了给分!!
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-12-11 11:47
中断倒不一定很频繁,但是时间不确定,我怕它来的不是时候,导致应有的读操作未做。应用一个DPC试试看吧。

兵马桶上的那位可是你?  :D


如果中断不频繁的话,不用担心,另外如果你还是担心的话,那就在dpc结束的时候再打开中断屏蔽

it is me in bmy :D
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
游客

返回顶部