Writing a StartIo Routine
As its name suggests, a StartIo routine is responsible for starting an I/O operation on the physical device.
Most lowest-level drivers provide a StartIo routine and rely on the I/O manager to queue IRPs to a system-supplied device queue. Some lowest-level drivers are designed to set up and manage their own supplemental IRP queues, but even these usually also provide a StartIo routine. (For more information about supplemental queues, see Setting up and Using Device Queues and Managing Device Queues.)
Higher-level drivers, including FSDs and PnP function and filter drivers, seldom have a StartIo routine because it can hamper performance. Instead, most file system drivers set up and maintain internal queues of IRPs. Other higher-level drivers either have internal queues for IRPs or simply pass IRPs on to lower drivers from their dispatch routines. See Driver-Managed IRP Queues for more information.
You can use the IoSetStartIoAttributes routine to set attributes that modify StartIo handling for your driver.
This section contains the following topics: