Определение поддержки нестандартных форматов
[Функция, связанная с этой страницей, Waveform Audio, является устаревшей функцией. Он был заменен WASAPI и Audio Graphs. WasAPI и Audio Graphs оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде WASAPI и Звуковые графы вместо Waveform Audio, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]
Чтобы узнать, поддерживает ли устройство определенный формат (стандартный или нестандартный), можно вызвать функцию waveOutOpen с флагом WAVE_FORMAT_QUERY. В следующем примере используется этот метод, чтобы определить, поддерживает ли устройство waveform-audio указанный формат.
// 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
}
Этот метод определения поддержки нестандартных форматов также применяется к устройствам ввода waveform-audio. Единственное отличие заключается в том, что вместо waveOutOpen используется функция waveInOpen для запроса поддержки формата.
Чтобы определить, поддерживается ли определенный формат данных waveform-audio любым из устройств waveform-audio в системе, используйте метод, показанный в предыдущем примере, но укажите константу WAVE_MAPPER для параметра uDeviceID .