适配器对象简介

任何使用直接 I/O 和 DMA 的驱动程序都必须创建适配器对象。 适配器对象表示 DMA 控制器通道或端口,或总线-主设备。

两种最低级别驱动程序必须使用适配器对象:

  • 使用系统 DMA 控制器的设备驱动程序。 此类设备称为 从属设备 ,称为“使用系统 (或 从属) DMA”。

  • 用作总线-主适配器的设备驱动程序。 此类设备与系统仲裁以使用 I/O 总线,因此使用总线主 DMA。

驱动程序通常位于设备扩展中,为指向适配器对象的指针提供存储。

为了执行 DMA 传输,使用这些 DMA 方法之一的设备驱动程序通常具有 AdapterControl 例程,并调用系统提供的用于操作适配器对象的支持例程。 不需要 AdapterControl 例程的 (驱动程序包括 那些使用散点/收集 DMA 的驱动程序,以及 那些使用 common-buffer、bus-master DMA.)

作为设备启动操作的一部分,处理 DMA 操作的驱动程序调用 I/O 管理器,后者又调用特定于平台的 HAL 来创建一组适配器对象。 在任何 Windows 平台上,适配器对象集通常包括以下对象的适配器对象:

  • 从属设备连接到的每个系统 DMA 控制器通道或端口。

  • 计算机中的每个总线主 DMA 设备。

(对于支持总线主 DMA 的 SCSI 设备,SCSI 端口驱动程序为特定于 HBA 的 SCSI 微型端口驱动程序设置适配器对象。微型端口驱动程序的 HwScsiFindAdapter 例程为端口驱动程序提供特定于适配器的数据。)

有关驱动程序何时以及如何使用适配器对象和 AdapterControl 例程的详细信息,请参阅本部分和使用 Bus-Master DMA

为设备驱动程序启用 DMA 重新映射