Writing ControllerControl Routines
Drivers that use a controller object must supply a ControllerControl routine to initiate I/O operations.
A lowest-level device driver that must synchronize operations through a physical controller, such as an "AT" disk controller, to similar devices can have a ControllerControl routine.
When a driver calls IoAllocateController, its ControllerControl routine is run immediately if the hardware represented by the controller object is available for an I/O operation. Otherwise, the ControllerControl routine is queued until the controller is free.
Note WDM drivers cannot use controller objects and ControllerControl routines.