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_opt_ PVOID Context );
Pointer to a driver-created controller object, usually representing a physical controller to be allocated for an I/O operation on an attached device.
Pointer to the device object, representing the target device of the current IRP.
Pointer to the driver-supplied ControllerControl routine.
Pointer to a driver-determined context, passed to the driver's ControllerControl routine when it is called.
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.
|Windows version||Available starting with Windows 2000.|
|Header||ntddk.h (include Ntddk.h)|
|DDI compliance rules||IrqlDispatch, HwStorPortProhibitedDDIs, IrqlDispatch(storport), SpNoWait, StorPortStartIo|