
To use asynchronous I/O, you must specify the FILE_FLAG_OVERLAPPED flag when you call the Windows CreateFile function. This type of I/O can improve an application’s throughput because it allows the application thread to continue with other work while an I/O operation is in progress. They complete the I/O operation before returning control to the caller.Īsynchronous I/O allows an application to issue multiple I/O requests and continue executing while the device performs the I/O operation. When used in their simplest form, the Windows ReadFile and WriteFile functions are executed synchronously. The program can then continue and access the transferred data immediately.

Most I/O operations that applications issue are synchronous (which is the default) that is, the application thread waits while the device performs the data operation and returns a status code when the I/O is complete. In this section, we’ll explain these options for I/O requests.

Furthermore, the I/O manager gives drivers the choice of implementing a shortcut I/O interface that can often mitigate IRP allocation for I/O processing. Types of I/OĪpplications have several options for the I/O requests they issue.

Processing varies further depending on whether the caller specified synchronous or asynchronous I/O, so we’ll begin our discussion of I/O types with these two and then move on to others. The stages vary depending on whether the request is destined for a device operated by a single-layered driver or for a device reached through a multilayered driver. I/O requests pass through several predictable stages of processing.

Now that we’ve covered the structure and types of drivers and the data structures that support them, let’s look at how I/O requests flow through the system.
