Ares
驱动小牛
驱动小牛
  • 注册日期2001-03-28
  • 最后登录2020-04-09
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望114点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:1007回复:5

请教FASTIO

楼主#
更多 发布于:2002-05-29 17:53
请问:
Windows NT/2000平台下的FastIoXxx例程都有些什么作用,为什么不用DEVICEIOCONTROL代替?这些例程只用于文件系统驱动程序吗?
谢谢
易水
guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-05-29 22:23
在IFS里面已经有说FASTIO和IRP的区别了!
3.1 IRPs Are Different From Fast I/O
[This is preliminary documentation and subject to change.]

IRPs are the default mechanism for requesting I/O operations. IRPs can be used for synchronous or asynchronous I/O, and for cached or noncached I/O. IRPs are also used for paging I/O. The Memory Manager processes page faults by sending appropriate IRPs to the file system.

Fast I/O is specifically designed for rapid synchronous I/O on cached files. In fast I/O operations, data is transferred directly between user buffers and the system cache, bypassing the file system and the storage driver stack. (Storage drivers do not use fast I/O.) Any data to be read from a file is assumed to be resident in the system cache when the fast I/O read request is received. (The file system is responsible for ensuring that this is the case.) Otherwise, a page fault can occur, causing one or more IRPs to be generated. When this happens, the fast I/O routine either returns FALSE, indicating that the requested operation failed and the caller must create an IRP, or puts the caller into a wait state until the page fault is processed.

File systems are required to support IRPs, but they are not required to support fast I/O. When the I/O Manager receives a request for synchronous file I/O (other than paging I/O), it first determines whether the target device object\'s driver contains an appropriate fast I/O callback routine. If it does, the I/O Manager invokes the fast I/O routine. If no such fast I/O routine is found, the I/O Manager creates and sends an IRP instead.

File system filter drivers are not required to support I/O on control device objects. However, filter device objects attached to file systems or volumes are required to pass all unrecognized or unwanted IRPs to the next lower driver on the driver stack. In addition, filter device objects that are attached to volumes must implement FastIoDetachDevice.
Ares
驱动小牛
驱动小牛
  • 注册日期2001-03-28
  • 最后登录2020-04-09
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望114点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2002-05-30 15:28
那么每个例程各自用于什么操作呢?

另:请问该怎么给分,不好意思。 ;)
易水
Ares
驱动小牛
驱动小牛
  • 注册日期2001-03-28
  • 最后登录2020-04-09
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望114点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2002-06-02 22:01
我UP!
易水
guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-06-02 22:40
在你的第一个帖子下面有一个给分的按钮的,还有一个是改分的按钮!分数只能给一次
对于不同的例程有不同的用法,具体的你要去问微软了!呵呵,估计DDK上面有
Ares
驱动小牛
驱动小牛
  • 注册日期2001-03-28
  • 最后登录2020-04-09
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望114点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2002-06-03 08:52
谢谢!
易水
游客

返回顶部