winter
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2013-08-15
  • 粉丝4
  • 关注0
  • 积分5分
  • 威望40点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1911回复:3

为什么WDM读写端口最好STARTIO例程中完成?

楼主#
更多 发布于:2001-06-21 15:34
无论是Art Baker的NT设备驱动程序设计指南 还是Windows WDM 设备驱动程序开发指南都介绍说读写端口最好STARTIO例程中完成,
我试了试,直接在读、写分发例程中也可以的,那么人为的排队IRP有什么好处吗?
请原谅我的无知与直率
jeosph
驱动中牛
驱动中牛
  • 注册日期2001-04-19
  • 最后登录2006-08-08
  • 粉丝0
  • 关注0
  • 积分96分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-06-21 15:52
这年头,干什么不要求排队啊?
主要的考虑出于多处理器安全的!WDM-》2000-》多处理器!!
winter
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2013-08-15
  • 粉丝4
  • 关注0
  • 积分5分
  • 威望40点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-06-21 16:55
如果我确认我的设备不再多处理器的机器上使用是不是就不用排队了?
请原谅我的无知与直率
leerom
驱动小牛
驱动小牛
  • 注册日期2001-06-08
  • 最后登录2010-08-31
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望22点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-06-21 16:57
如果应用程序用异步I/O一下子发来20个读数据的I/O请求。你可以想到会出现以下的情况:第一个I/O请求先设置好了寄存器,然后返回系统并等待设备产生中断。如果你没使用排队机制,那么在等待的过程中第二个请求到来,它又去设置了寄存器,这是设备还在处理前一个请求,而你又重置了设备这就很可能导致设备出错,使你读取错误的数据。。。。。所以当你要操作设备的寄存器还是用StartI/O排队的好。
leerom
游客

返回顶部