阅读:828回复:4
很着急,100分,时间间隔怎么这么长??
WIN2000系统 ISA总线 DS开发驱动,NT式驱动。
应用程序和驱动程序采用同步I/O的方式进行通信,采用METHOD_IN_DIRECT方式,应用层把数据传给驱动层,驱动里面把这些数据写给端口 经过测量,发现应用程序每300ms发一次IRP给驱动,每次MDL描述的内存中有12KB的数据,在分发例程里,驱动把数据写给端口,写端口占用了20ms, 这样可以算出ISA的数据传输速率是600KB/S。但是驱动写给端口的两次12KB的之间的时间间隔是600ms怎么会有这么长的时间??? 哪位大虾给分析分析! 急切!, |
|
|
沙发#
发布于:2003-08-21 09:42
1. 在Dispatch和IOCNTL中各加入Debug信息,看各自在什么时间启动。
2. 数百ms不可以接受。不会有这么长。是不是你的系统中还有什么别的IRP在频繁进行? |
|
|
板凳#
发布于:2003-08-21 10:10
1. 在Dispatch和IOCNTL中各加入Debug信息,看各自在什么时间启动。 谢谢你的回答,非常感谢你昨天晚上给我的指导。 1 采用同步方式: 我在Dispatch和IOCTL分别加了调试信息,应用每给驱动传送一个IRP,驱动顺序调用以下例程:CREATFILE,DEVICEIOCTL,IOCTL,发现从进入CREATFILE到进入IOCTL的处理例程花了0.4ms,IOCTL的处理例程写12K的数据到端口用了20ms,本次IRP结束,到下一个IRP被处理(下一个CREATFILE被调用)之间的时间间隔隔了有将近600ms,快的时候到200ms,应用调用驱动是很均匀的,但我驱动这边IRP被处理的时间间隔却很不均匀(中间时间间隔不确定,这正常吗?) 2。我的系统上只运行了应用和驱动,驱动当时只处理了应用层发来的IRP,没有其他的IRP,真的不知道是怎么回事! . 2。 |
|
|
地板#
发布于:2003-08-22 08:59
你的这个问题我没有实际试过,没法回答你了。
不过最近会有个朋友过来,我请教他一下好了。 或者我搭个系统试一下。要等几天了。 |
|
|
地下室#
发布于:2003-08-22 09:44
非常感谢!!!
|
|
|