3.3 Adapter Objects and DMA

An NT device driver must use a system-created adapter object if it sets up its device objects for direct I/O and its device uses DMA, as already mentioned in Section 3.2.4.2.

Two kinds of lowest-level NT drivers must use adapter objects:

When these kinds of device drivers initialize, they call the platform-specific NT HAL to create a set of adapter objects, representing DMA controller channels or ports and busmaster devices. Each HAL, like the NT SCSI port driver described in Chapter 2, is implemented as a dynamic-link library so that NT drivers can link themselves against each HAL (or SCSI miniport drivers against the NT SCSI port driver) and call the same support routines on every NT platform.

For any machine running Windows NT, the set of HAL-created adapter objects usually includes the following:

Note that the NT SCSI port driver is responsible for creating and managing adapter objects for SCSI HBAs. An HBA-specific miniport driver supplies the necessary data for the NT SCSI port driver to create a corresponding adapter object when the miniport driver’s HwScsiGetConfigInfo routine executes. For more information about SCSI miniport drivers, see Appendix A.