7.2.4 StartIo Routines in Higher-Level NT Drivers

Any higher-level NT driver can have a StartIo routine at the driver writer’s discretion. However, such a driver is unlikely to be interoperable with existing lower-level drivers and is likely to exhibit poor performance characteristics.

A StartIo routine in a higher-level NT driver has the following effects:

None of the system’s higher-level NT drivers has a StartIo routine, because it can slow IRP processing for the driver itself, for all drivers above and below it, and for the system overall.

Most higher-level NT drivers simply send IRPs to the underlying device driver(s) from their Dispatch routines, as described in Chapter 6, and do any necessary clean-up processing in their IoCompletion routines. For more information about IoCompletion routines, see Chapter 13.

However, higher-level NT drivers can set up internal queues for IRPs that request particular kinds of operations or set up internal queues to hold IRPs bound for a set of heterogeneous underlying devices like the NT SCSI port driver, as mentioned in Section 7.1.