Поделиться через


Определение поддержки нестандартных форматов

[Функция, связанная с этой страницей, 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 .