gargantua
驱动牛犊
驱动牛犊
  • 注册日期2003-02-02
  • 最后登录2003-09-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:925回复:2

向大侠们请教两个问题

楼主#
更多 发布于:2003-03-21 15:05
1.我开发的这个驱动当底层硬件产生中断时只需要把这个中断传到上层就可以了,请问大侠们在我这个ISR和DPC中都需要做些什么工作?还需要做同步、阻塞线程之类的事情吗?

2.在对硬件的读写操作中,如果在读写分发例程直接对硬件读写操作,那么在应用层如何与底层通信?

问题比较弱,但确实是比较糊度,请大侠们赐教。如果能有用DS开发的代码,就更好了。
3x!
mailme
驱动老牛
驱动老牛
  • 注册日期2001-05-21
  • 最后登录2010-02-25
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-03-21 19:26

1、
   A: ISR中判断是否是你的卡发出的中断(读中断标志位),如果不是就返回FALSE,是就清中断,
   B: DPC中读数据
   多数情况下这样做就可以了。当然,你也可以在ISR中读写数据,但是一定要在ISR中一开始就清中断,不然系统会不停调用你的ISR,也就是陷入了死循环。
   C: 同步一般在用户层做

2、
   应用层和内核层通信,可以用iocontrol读写寄存器。不过你的程序用到了中断,最好用readfile、writefile,在内核里面排个队。

具体函数查ddk和msdn吧,一步步来,呵呵

早起早睡 精神百倍
Tom.Cat
禁止发言
禁止发言
  • 注册日期2001-10-10
  • 最后登录2019-07-29
  • 粉丝1
  • 关注0
  • 积分-53792分
  • 威望197411点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2003-03-21 20:51
用户被禁言,该主题自动屏蔽!
游客

返回顶部