Skip to content

Latest commit

 

History

History
85 lines (65 loc) · 3.41 KB

ns-ntddk-_controller_object.md

File metadata and controls

85 lines (65 loc) · 3.41 KB
UID title description old-location tech.root ms.date keywords ms.keywords req.header req.include-header req.target-type req.target-min-winverclnt req.target-min-winversvr req.kmdf-ver req.umdf-ver req.ddi-compliance req.unicode-ansi req.idl req.max-support req.namespace req.assembly req.type-library req.lib req.dll req.irql targetos req.typenames f1_keywords topic_type api_type api_location api_name
NS:ntddk._CONTROLLER_OBJECT
_CONTROLLER_OBJECT (ntddk.h)
A controller object represents a hardware adapter or controller with homogenous devices that are the actual targets for I/O requests.
kernel\controller_object.htm
kernel
04/30/2018
CONTROLLER_OBJECT structure
*PCONTROLLER_OBJECT, CONTROLLER_OBJECT, CONTROLLER_OBJECT structure [Kernel-Mode Driver Architecture], PCONTROLLER_OBJECT, PCONTROLLER_OBJECT structure pointer [Kernel-Mode Driver Architecture], _CONTROLLER_OBJECT, kernel.controller_object, kstruct_a_391d0fc2-3a61-4b2b-b571-143d2af7ef9b.xml, ntddk/CONTROLLER_OBJECT, ntddk/PCONTROLLER_OBJECT
ntddk.h
Ntddk.h
Windows
Windows
CONTROLLER_OBJECT, *PCONTROLLER_OBJECT
_CONTROLLER_OBJECT
ntddk/_CONTROLLER_OBJECT
PCONTROLLER_OBJECT
ntddk/PCONTROLLER_OBJECT
CONTROLLER_OBJECT
ntddk/CONTROLLER_OBJECT
APIRef
kbSyntax
HeaderDef
Ntddk.h
_CONTROLLER_OBJECT
PCONTROLLER_OBJECT
CONTROLLER_OBJECT

_CONTROLLER_OBJECT structure

-description

A controller object represents a hardware adapter or controller with homogenous devices that are the actual targets for I/O requests. A controller object can be used to synchronize a device driver's I/O to the target devices through its hardware adapter/controller.

A controller object is partially opaque. Driver writers must know about a certain field associated with the controller object because their drivers access this field through the controller object pointer returned by IoCreateController. The following field in a controller object is accessible to the creating driver.

-struct-fields

-field Type

-field Size

-field ControllerExtension

Pointer to the controller extension. The structure and contents of the controller extension are driver-defined. The size is driver-determined, specified in the driver's call to IoCreateController. Usually, drivers maintain common state about I/O operations in the controller extension and device-specific state about I/O for a target device in the corresponding device extension.

-field DeviceWaitQueue

-field Spare1

-field Spare2

-remarks

Most driver routines that process IRPs are given a pointer to the target device object. Consequently, device drivers that use controller objects frequently store the controller object pointer returned by IoCreateController in each device extension.

Note that a controller object has no name so it cannot be the target of an I/O request, and higher-level drivers cannot connect or attach their device objects to a device driver's controller object.

Undocumented fields within a controller object should be considered inaccessible. Drivers with dependencies on object field locations or access to undocumented fields might not remain portable and interoperable with other drivers over time.

-see-also

IoCreateController