判斷非標準格式支援
[與此頁面相關聯的功能 「波狀音訊」是舊版功能。 WASAPI和音訊圖表已取代它。 WASAPI和音訊圖表已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 WASAPI 和 音訊圖形 ,而不是 「波形音訊」。 Microsoft 建議使用舊版 API 的現有程式碼盡可能重寫為使用新的 API。
若要查看裝置是否支援特定格式 (標準或非標準) ,您可以使用 WAVE_FORMAT_QUERY 旗標呼叫 waveOutOpen 函式。 下列範例會使用這項技術來判斷電壓音訊裝置是否支援指定的格式。
// Determines whether the specified waveform-audio output device
// supports a specified waveform-audio format. Returns
// MMSYSERR_NOERROR if the format is supported, WAVEERR_BADFORMAT if
// the format is not supported, and one of the other MMSYSERR_ error
// codes if there are other errors encountered in opening the
// specified waveform-audio device.
MMRESULT IsFormatSupported(LPWAVEFORMATEX pwfx, UINT uDeviceID)
{
return (waveOutOpen(
NULL, // ptr can be NULL for query
uDeviceID, // the device identifier
pwfx, // defines requested format
NULL, // no callback
NULL, // no instance data
WAVE_FORMAT_QUERY)); // query only, do not open device
}
判斷非標準格式支援的這項技術也適用于電壓音訊輸入裝置。 唯一的差異在於 waveInOpen 函式是用來取代 waveOutOpen 來查詢格式支援。
若要判斷系統中任一個電壓音訊裝置是否支援特定的電壓音訊資料格式,請使用上一個範例中說明的技術,但指定 uDeviceID 參數的WAVE_MAPPER常數。