The IoAllocateController routine sets up the call to a driver-supplied ControllerControl routine as soon as the device controller, represented by the given controller object, is available to carry out an I/O operation for the target device, represented by the given device object.
VOID
IoAllocateController(
IN PCONTROLLER_OBJECT ControllerObject,
IN PDEVICE_OBJECT DeviceObject,
IN PDRIVER_CONTROL ExecutionRoutine,
IN PVOID Context
);
None
Declared in ntddk.h. Include ntddk.h.
This routine reserves exclusive access to the hardware controller for the specified device.
The ControllerControl routine returns a value indicating whether the controller remains allocated to the device, either DeallocateObject or KeepObject. If it returns KeepObject, the driver must subsequently call IoFreeController to release the controller object.
Callers of IoAllocateController must be running at IRQL = DISPATCH_LEVEL.
ControllerControl, IoCreateController, IoDeleteController, IoFreeController