使用总线主控 DMA
总线主 DMA 设备的驱动程序可以使用以下类型的系统提供的 DMA 支持:
如果总线主适配器允许驱动程序确定何时完成 DMA 传输操作和/或何时开始对给定 IRP 执行另一个传输操作,则为基于数据包的 DMA。 有关详细信息 ,请参阅使用 Packet-Based Bus-Master DMA 。
公共缓冲区 DMA (也称为 连续 DMA) 如果总线-主适配器未提供一种方法,以便驱动程序随时确定传输操作何时开始或传输完成,或者是否连续或重复使用单个缓冲区区域进行 DMA 传输。 有关详细信息 ,请参阅使用 Common-Buffer Bus-Master DMA 。
根据总线-主适配器的性质,某些驱动程序以独占方式使用基于数据包的 DMA,有些驱动程序独占使用通用缓冲区 DMA,而有些驱动程序则同时使用这两者。 例如,使用邮箱方案来传达状态信息和命令的总线-主适配器的驱动程序可能为驱动程序与其适配器之间共享的邮箱使用通用缓冲区,以及用于数据传输的基于数据包的 DMA。