确定非标准格式支持

[与此页面关联的功能 波形音频是一项旧功能。 它已被 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常量。