dayehkm
驱动牛犊
驱动牛犊
  • 注册日期2001-09-10
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1646回复:1

如何提高访问速度(通过WDM,不采用DMA及中断方式)?

楼主#
更多 发布于:2001-09-18 17:55
各位:本人现已做一个WDM(用DriverWorks,经不同的DDK环境编译,可在Win98SE、WinMe、Win2000下访问系统低端内存、各种I/O端口及ISA总线资源,功能上类似Tvichw32),目前通过Win32函数Ioct采用Buffer方式进行WDM与Application交互,由于是针对实时数据采集系统,要求至少3K的采样率,每次读1或2Byte内容(不宜采用DMA方式),本人在实际测试中发现通过Win32函数Ioct的效率太低(速度为1K次/秒),达不到要求,本人测试过使用Tvichw32读端口(测试时读并口),速度很快,具体测试数据如下(Win98SE系统):1、进行10000次空循环,在测试机器上需5.60秒;2、本人使用嵌入汇编的方式读并口(同样进行10000次,以下均测试10000次)需5.75秒;3、使用WDM通过Win32函数Ioct采用Buffer方式进行WDM与Application交互读端口的方式,需11秒;4、使用WDM通过Win32函数ReadFile()读端口,需12秒;5、使用Tvichw32读端口,需5.75秒,与嵌入汇编的方式速度一致。需要说明的是,本人以上的操作方式,除方式4外其他各种操作均在前面3中操作系统中工作正确,本人还分析过Tvichw32,在Win98SE中,它采用的是VxD技术(动态加载方式),在Win2000中采用的是WDM技术,请问各位高手,该采用什么技术提高访问速度(通过WDM,不采用DMA方式,要求采样率维持3K)?十分火急!谢谢!也非常欢迎有兴趣的同志一起研究Tvichw32的核心技术!

本人电子邮件:huangkaiming@263.net

[dayehkm 编辑于 2001-09-18 17:57]

最新喜欢:

xiangshifuxiangs...
minwang
驱动牛犊
驱动牛犊
  • 注册日期2001-08-18
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-09-19 01:35
What about buffering data in your driver, and transfering
the whole buffer to user app on an IOCTL? You may need
two buffers to achieve this.

Refer to Filemon at http://www.sysinternals.com for detailed
source code.

My two cents, :-)
游客

返回顶部