天天看点

Windows CE 5.0:驱动程序---音频 MDD 和 PDD

发布日期: 11/1/2004 | 更新日期: 11/1/2004

作为直接使用统一音频模型 (UAM) 或实现流式接口的替代方法,可以使用 Microsoft 提供的模型设备驱动程序 (MDD) 库。该库通过音频设备驱动程序服务提供程序接口 (DDSI) 函数实现了流式接口函数。

如果您使用 Wavemdd.lib,则必须创建匹配的、实现了这些音频 DDSI 函数的平台相关驱动程序 (PDD) 库。PDD 库通常被称为 Wavepdd.lib(尽管不要求这样)。然后,可以将这两个库链接起来,以构成音频驱动程序(通常称为 Wavedev.dll)。

一般情况下,音频硬件支持比通常适用于文件的操作集更大的操作集。例如,文件不具有音量控制和播放速度控制,但音频硬件通常具有这些控制。

流式接口的 DeviceIOControl 部分允许对文件进行任意操作,从而使得可以使用 WAV_IOControl 函数来操纵音频硬件。为了向音频硬件发送命令,OS 向 WAV_IOControl 传递了各种消息。例如,为了让音频硬件做好录制准备,中间件使用 WAV_IOControl 向音频驱动程序发送 WIDM_PREPARE 消息。

发送到音频驱动程序的消息类似于基于 Windows 的桌面 OS 上的用户模式音频驱动程序(如 Mmdrv.dll)所使用的那些消息。

因为音频驱动程序完全依赖于 DeviceIOControl 函数消息,所以流式接口的其余部分的实现相对简单。特别地,WAV_Read、WAV_Seek 和 WAV_Write 函数仅仅是返回常数值的存根。

其他流式接口函数应该完全实现,并且遵循在这些函数的 Microsoft Windows CE API Reference 中描述的约定。

下图显示了使用 MDD 库的音频驱动程序的交互。

Windows CE 5.0:驱动程序---音频 MDD 和 PDD

如图所示,播放和录制声音的第一步是创建一个从应用程序到 OS 的调用。OS 将此类调用转换为对音频驱动程序的 WAV_IOControl 调用。执行这一转换的 OS 技术为 Wave API Manager。然后,音频驱动程序对硬件执行适当的操作。

设备管理器只加载和注册音频驱动程序;它并不直接参与该驱动程序的操作。

像标准流式接口驱动程序一样,音频驱动程序使用注册表项来存储配置信息以及将其本身公布给 OS。

如果该音频驱动程序尚未列在 Platform.reg 中,请创建一个 HKEY_LOCAL_MACHINE/Drivers/Builtin/Audio 注册表项来存储配置信息。

当该音频驱动程序在启动时加载时,设备管理器会为该驱动程序创建一个 HKEY_LOCAL_MACHINE/Drivers/Active 注册表项。因为设备管理器只在启动时检查音频驱动程序,所以附加音频硬件的驱动程序仍然需要在注册表的 /Builtin/Audio 部分中具有它们的注册表条目,尽管它们的硬件未内置到基于 Windows CE 的运行时映像中。

有关基于 PCI 的驱动程序的驱动程序加载模型的信息,请参阅 PCI Bus Driver Loading Process。

以下列表显示了音频驱动程序的流式接口函数:

WAV_Close
WAV_Deinit
WAV_Init
WAV_IOControl
WAV_Open
WAV_PowerDown
WAV_PowerUp
WAV_Read
WAV_Seek
WAV_Write

有关这些函数的详细信息,请参阅 Waveform Audio Driver Functions。有关流式接口驱动程序的详细信息,请参阅 Stream Interface Driver Development Concepts。

以下列表显示了音频驱动程序的 DDSI 函数:

PDD_AudioDeinitialize
PDD_AudioGetInterruptType
PDD_AudioInitialize
PDD_AudioMessage
PDD_AudioPowerHandler
PDD_WaveProc

有关这些函数的详细信息,请参阅 Audio PDD Functions。

另请参阅

Audio Driver Development Concepts | Stream Interface Driver Development Concepts