jeosph
驱动中牛
驱动中牛
  • 注册日期2001-04-19
  • 最后登录2006-08-08
  • 粉丝0
  • 关注0
  • 积分96分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
阅读:1442回复:5

关于windows wdm设备驱动程序开发指南――wdmio的问题

楼主#
更多 发布于:2001-11-29 11:25
在这例子中,IRP_MJ_WRIET/IRP_MJ_READ 一部分在iostartio中用
可kesynchronizeExecution(),完成,到了中断ISR里,又有一部分
TxComplete-RunWriteCmdsSynch(dx),对未传输完毕的数据 继续进行传输。

实在不明白,书上的例子为什么这么干?

如此这般,用ISR,再用dpc ,岂不是没事找事吗 ?



最新喜欢:

mapoflmapofl
mengzi
驱动牛犊
驱动牛犊
  • 注册日期2001-08-02
  • 最后登录2004-05-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-11-29 14:45
那是你对系统如何响应中断机理没有完全吃透,对于共享中断的处理,I/O管理器将轮询所有共享此硬件中断的ISRs,不是该中断的设备driver的ISR返回false,并查询下一个设备的ISR,直到某个设备返回TRUE,如此这般,无论是别的设备响应该中断有可能调用本设备的ISR考虑,还是本设备再次响应该中断要避免中断嵌套考虑,显然ISR例程越短越好。
jeosph
驱动中牛
驱动中牛
  • 注册日期2001-04-19
  • 最后登录2006-08-08
  • 粉丝0
  • 关注0
  • 积分96分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-11-30 10:07
那是你对系统如何响应中断机理没有完全吃透,对于共享中断的处理,I/O管理器将轮询所有共享此硬件中断的ISRs,不是该中断的设备driver的ISR返回false,并查询下一个设备的ISR,直到某个设备返回TRUE,如此这般,无论是别的设备响应该中断有可能调用本设备的ISR考虑,还是本设备再次响应该中断要避免中断嵌套考虑,显然ISR例程越短越好。



老兄:
你没有理解我问的问题阿。
我问的是,为什么数据传输在wdmiostartio里面处理了一次,在中断里又处理了一次,中断驱动的I/O传输难道就是这样驱动的?


mengzi
驱动牛犊
驱动牛犊
  • 注册日期2001-08-02
  • 最后登录2004-05-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-11-30 17:55
这位兄台:
    你好,小弟平时干些(COMPACT)PCI的设备的设计工作,兼做点不同OS的驱动程序,心得略有一二,偶尔上网逛逛,查找器件和不知道有用没用的工具,不晓得咋就看到了你提的这个问题,我只是看到了最后一句,回复得有些断章取义,请原谅,是我没有吃透你的意思。
    就事论事,一个IRP只是一个命令或操作,iostartio例程分派该任务,KesynchronizeExecution例程将当前的IRQL升到与设备的ISR相同的IRQL,获得ISR的自旋锁,并且直接调用例程****** ,该例程在运行时进行端口读写或映射内存读写,操作完成后将使设备发出中断信号,自然接下来由ISR响应中断(在DIRQL级),然后是DPC例程(在APC_LEVEL级)。不知然否

jeosph
驱动中牛
驱动中牛
  • 注册日期2001-04-19
  • 最后登录2006-08-08
  • 粉丝0
  • 关注0
  • 积分96分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-11-30 18:05
这位兄台:
    你好,小弟平时干些(COMPACT)PCI的设备的设计工作,兼做点不同OS的驱动程序,心得略有一二,偶尔上网逛逛,查找器件和不知道有用没用的工具,不晓得咋就看到了你提的这个问题,我只是看到了最后一句,回复得有些断章取义,请原谅,是我没有吃透你的意思。
    就事论事,一个IRP只是一个命令或操作,iostartio例程分派该任务,KesynchronizeExecution例程将当前的IRQL升到与设备的ISR相同的IRQL,获得ISR的自旋锁,并且直接调用例程****** ,该例程在运行时进行端口读写或映射内存读写,操作完成后将使设备发出中断信号,自然接下来由ISR响应中断(在DIRQL级),然后是DPC例程(在APC_LEVEL级)。不知然否

 


我也是这么认为的,只是从例子的原代码,看不出是这种处理方式。
或许这个例子有些问题!




mengzi
驱动牛犊
驱动牛犊
  • 注册日期2001-08-02
  • 最后登录2004-05-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-12-05 11:32
补充一句:这种驱程模型是对临界资源的同步保护机制的一种实现,把上述3个回复倒叙合在一起,可能就是你想要的结果。
游客

返回顶部