Any driver that uses direct I/O and DMA must create an adapter object. The adapter object represents either a DMA controller channel or port, or a bus-master device.
Two kinds of lowest-level drivers must use adapter objects:
Drivers provide storage, usually in a device extension, for a pointer to the adapter object.
To carry out DMA transfers, drivers of devices that use either of these DMA methods usually have an AdapterControl routine and call system-supplied support routines that manipulate adapter objects. (Drivers that do not require AdapterControl routines include those that use scatter/gather DMA and those that use common-buffer, bus-master DMA.)
As part of device start-up operations, drivers that handle DMA operations call the I/O Manager, which in turn calls the platform-specific HAL to create a set of adapter objects. On any Windows platform, the set of adapter objects usually includes an adapter object for:
(For SCSI devices capable of bus-master DMA, the SCSI port driver sets up adapter objects for HBA-specific SCSI miniport drivers. The miniport driver's HwScsiFindAdapter routine supplies the port driver with adapter-specific data.)
See Using System DMA and Using Bus-Master DMA for more information about when and how drivers use adapter objects and AdapterControl routines.