Determinando o suporte a formato não padrão

[O recurso associado a esta página, Waveform Audio, é um recurso herdado. Ele foi substituído por WASAPI e Audio Graphs. WASAPI e Audio Graphs foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use WASAPI e Audio Graphs em vez de Waveform Audio, quando 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 dá suporte a 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 de áudio de forma de onda dá 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 
} 

Essa técnica para determinar o suporte a formato não padrão também se aplica a dispositivos de entrada waveform-audio. A única diferença é que a função waveInOpen é usada no lugar de waveOutOpen para consultar o suporte ao formato.

Para determinar se um formato de dados de áudio de forma de onda específico tem suporte de qualquer um dos dispositivos de áudio de forma de onda em um sistema, use a técnica ilustrada no exemplo anterior, mas especifique a constante WAVE_MAPPER para o parâmetro uDeviceID .