libin2309
驱动大牛
驱动大牛
  • 注册日期2002-11-20
  • 最后登录2005-12-29
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:828回复:4

很着急,100分,时间间隔怎么这么长??

楼主#
更多 发布于:2003-08-20 17:22
WIN2000系统 ISA总线   DS开发驱动,NT式驱动。
应用程序和驱动程序采用同步I/O的方式进行通信,采用METHOD_IN_DIRECT方式,应用层把数据传给驱动层,驱动里面把这些数据写给端口

经过测量,发现应用程序每300ms发一次IRP给驱动,每次MDL描述的内存中有12KB的数据,在分发例程里,驱动把数据写给端口,写端口占用了20ms, 这样可以算出ISA的数据传输速率是600KB/S。但是驱动写给端口的两次12KB的之间的时间间隔是600ms怎么会有这么长的时间???

哪位大虾给分析分析!
急切!,

我是一只小小鸟,永远也飞也飞不高,但我永远在飞!
grant
驱动老牛
驱动老牛
  • 注册日期2001-05-14
  • 最后登录2007-04-13
  • 粉丝0
  • 关注0
  • 积分350分
  • 威望35点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-08-21 09:42
1. 在Dispatch和IOCNTL中各加入Debug信息,看各自在什么时间启动。
2. 数百ms不可以接受。不会有这么长。是不是你的系统中还有什么别的IRP在频繁进行?
助人乃快乐之本 有人给分就更快乐了 :-)
libin2309
驱动大牛
驱动大牛
  • 注册日期2002-11-20
  • 最后登录2005-12-29
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-08-21 10:10
1. 在Dispatch和IOCNTL中各加入Debug信息,看各自在什么时间启动。
2. 数百ms不可以接受。不会有这么长。是不是你的系统中还有什么别的IRP在频繁进行?


谢谢你的回答,非常感谢你昨天晚上给我的指导。
1
 采用同步方式:
我在Dispatch和IOCTL分别加了调试信息,应用每给驱动传送一个IRP,驱动顺序调用以下例程:CREATFILE,DEVICEIOCTL,IOCTL,发现从进入CREATFILE到进入IOCTL的处理例程花了0.4ms,IOCTL的处理例程写12K的数据到端口用了20ms,本次IRP结束,到下一个IRP被处理(下一个CREATFILE被调用)之间的时间间隔隔了有将近600ms,快的时候到200ms,应用调用驱动是很均匀的,但我驱动这边IRP被处理的时间间隔却很不均匀(中间时间间隔不确定,这正常吗?)
2。我的系统上只运行了应用和驱动,驱动当时只处理了应用层发来的IRP,没有其他的IRP,真的不知道是怎么回事!
.
2。

我是一只小小鸟,永远也飞也飞不高,但我永远在飞!
grant
驱动老牛
驱动老牛
  • 注册日期2001-05-14
  • 最后登录2007-04-13
  • 粉丝0
  • 关注0
  • 积分350分
  • 威望35点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-08-22 08:59
你的这个问题我没有实际试过,没法回答你了。
不过最近会有个朋友过来,我请教他一下好了。
或者我搭个系统试一下。要等几天了。
助人乃快乐之本 有人给分就更快乐了 :-)
libin2309
驱动大牛
驱动大牛
  • 注册日期2002-11-20
  • 最后登录2005-12-29
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-08-22 09:44
非常感谢!!!
我是一只小小鸟,永远也飞也飞不高,但我永远在飞!
游客

返回顶部