Partilhar via


Determinando o suporte a formatos não padrão

[O recurso associado a esta página, Waveform Audio, é um recurso legado. Foi substituído por WASAPI e Audio Graphs. WASAPI e Audio Graphs foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda vivamente que o novo código utilize WASAPI e Audio Graphs em vez de Waveform Audio, sempre que possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

Para ver se um dispositivo suporta um formato específico (padrão ou não padrão), você pode chamar a função waveOutOpen com o sinalizador WAVE_FORMAT_QUERY. O exemplo a seguir usa essa técnica para determinar se um dispositivo waveform-audio oferece suporte a um formato especificado.

// 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 
} 

Esta técnica para determinar o suporte a formatos não padronizados também se aplica a dispositivos de entrada de áudio em forma de onda. A única diferença é que a função waveInOpen é usada no lugar de waveOutOpen para consultar o suporte ao formato.

Para determinar se um determinado formato de dados waveform-audio é suportado por qualquer um dos dispositivos waveform-audio em um sistema, use a técnica ilustrada no exemplo anterior, mas especifique a constante WAVE_MAPPER para o parâmetro uDeviceID.