确定非标准格式支持
[与此页面关联的功能 波形音频是一项旧功能。 它已被 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常量。