

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.
