WavePci 端口驱动程序

重要说明 不再建议使用 WavePci,而是使用 WaverRT。

WavePci 端口驱动程序通过音频设备管理波次流的播放或录制,该设备可以执行散布/收集 DMA 传输,或者从物理内存中的任何位置传输。 使用散步/收集 DMA,设备可以在包含一系列映射的缓冲区中处理音频数据。 每个映射都是物理连续内存块,但连续映射不一定相互连续。 与 WavePci 兼容的设备是音频适配器上的硬件功能。 通常,适配器是主板上的集成芯片集的一部分,或者安装在插入主板上的 PCI 插槽的音频卡上。 适配器驱动程序提供相应的 WavePci 微型端口驱动程序,该驱动程序绑定到 WavePci 端口驱动程序对象,以形成可以捕获或呈现波次流的波次筛选器

WavePci 端口驱动程序向微型端口驱动程序公开 IPortWavePci 接口。 IPortWavePci 会继承基接口 IPort 中的方法。 此外,IPortWavePci 还提供以下方法:

IPortWavePci::NewMasterDmaChannel

创建新的主 DMA 声道对象。 IPortWavePci::Notify

通知端口驱动程序 DMA 控制器已前进到音频流中的新位置。 WavePci 端口驱动程序还会向每个微型端口驱动程序的流对象公开 IPortWavePciStream 接口。 IPortWavePciStream 继承基接口 IUnknown 中的方法。 IPortWavePciStream 提供以下其他方法:

IPortWavePciStream::GetMapping

从端口驱动程序获取下一个映射。 IPortWavePciStream::ReleaseMapping

释放以前通过 GetMapping 调用获取的映射。 IPortWavePciStream::TerminatePacket

即使仅部分填充了捕获数据,也终止 I/O 数据包。 I/O 数据包是音频缓冲区的一部分,其中包含与特定映射 IRP 关联的所有映射。

WavePci 端口和微型端口对象通过各自的 IPortWavePciIMiniportWavePci 接口相互通信。 此外,WavePci 端口和微型端口流对象通过其各自的 IPortWavePciStreamIMiniportWavePciStream 接口相互通信。