Expand Minimize

IoAllocateController routine

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.

Syntax


VOID IoAllocateController(
  _In_      PCONTROLLER_OBJECT ControllerObject,
  _In_      PDEVICE_OBJECT DeviceObject,
  _In_      PDRIVER_CONTROL ExecutionRoutine,
  _In_opt_  PVOID Context
);

Parameters

ControllerObject [in]

Pointer to a driver-created controller object, usually representing a physical controller to be allocated for an I/O operation on an attached device.

DeviceObject [in]

Pointer to the device object, representing the target device of the current IRP.

ExecutionRoutine [in]

Pointer to the driver-supplied ControllerControl routine.

Context [in, optional]

Pointer to a driver-determined context, passed to the driver's ControllerControl routine when it is called.

Return value

None

Remarks

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.

Requirements

Version

Available starting with Windows 2000.

Header

Ntddk.h (include Ntddk.h)

Library

Ntoskrnl.lib

IRQL

DISPATCH_LEVEL

DDI compliance rules

IrqlDispatch, HwStorPortProhibitedDDIs, IrqlDispatch(storport), SpNoWait, StorPortStartIo

See also

ControllerControl
IoCreateController
IoDeleteController
IoFreeController

 

 

Send comments about this topic to Microsoft

Show:
© 2014 Microsoft