dahello
驱动中牛
驱动中牛
  • 注册日期2001-06-16
  • 最后登录2004-06-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2229回复:5

startIo,ISR,DpcForIsr例程指什么?

楼主#
更多 发布于:2001-08-06 20:06
我看到一些书中提到驱动程序必须包含startIo,ISR,DpcForIsr例程
,指哪几部分?请指教!谢谢了
不懂就问 :D
dahello
驱动中牛
驱动中牛
  • 注册日期2001-06-16
  • 最后登录2004-06-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-08-09 19:26
作上层驱动用不到吧?
不懂就问 :D
jeosph
驱动中牛
驱动中牛
  • 注册日期2001-04-19
  • 最后登录2006-08-08
  • 粉丝0
  • 关注0
  • 积分96分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-08-10 11:22
1)一般对I/O 的操作是要求排队一个个执行的,STARTIO就是干这个的,在你处理完一个I/O,就调用IOSTARTPACKET就可以将队列中的IRP,发送给STARTIO,一个个处理(注意区分,IOSTARTNEXTPACKET)
2)ISR (INTERRUPT SERVICE INTERRUPT),用于服务中断的。
3)DPCFORISR是ISR的推迟过程调用,因为ISR的执行是在DIRQL,高于Dispatch_Level,级别较高,不可以被同级和低级的IRQL抢占,所以次代码运行时间应该尽量简短,在这个级别上不应该过多地占用CPU时间,所以,如果有大量的数据/IOCOMPLETEIRP(IRP的完成非常耗时,涉及一个回卷过程),则应该放在DPC里运行,运行在DISPATCH――LEVEL级
4)我不知道,你的上层指的是什么?
这些都是DDK里最简单的内容,还是好好看DDK吧,否则一时半会也无法说的清楚的!

dahello
驱动中牛
驱动中牛
  • 注册日期2001-06-16
  • 最后登录2004-06-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-08-12 21:11
我的意思是说并不是所有的驱动都必须些这三个部分吧?
不懂就问 :D
jeosph
驱动中牛
驱动中牛
  • 注册日期2001-04-19
  • 最后登录2006-08-08
  • 粉丝0
  • 关注0
  • 积分96分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-08-13 10:02
当然不是必须的。
比如你的设备就没有中断,何来ISR DCPFORISR?(网卡设备小端口驱动就可以没有中断,而用定时器POLLING,且也没有IOSTARTIO)

dahello
驱动中牛
驱动中牛
  • 注册日期2001-06-16
  • 最后登录2004-06-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-08-13 19:21
那我做USB上层驱动,好像就不需要这几个例程?
太谢谢了 收益匪浅 给分
不懂就问 :D
游客

返回顶部