天天看點

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