Jump to content

Recommended Posts


Posted

Basic Idea

Fast IO = A means of reading or writing a cached file without going through the work of generating I/O request packet (IRP).

IRPs Are Different From Fast I/O

http://msdn.microsoft.com/en-us/library/ms790753.aspx

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.) If all of the data to be read from a file is resident in the system cache when a fast I/O read or write request is received, the request is satisfied immediately. 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, or puts the caller into a wait state until the page fault is processed. If the fast I/O routine returns FALSE, the requested operation failed and the caller must create an IRP.

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 that are 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.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...