Compartir a través de


Determinar la compatibilidad con formatos no estándar

[La característica asociada a esta página, Waveform Audio, es una característica heredada. Se ha reemplazado por WASAPI y Audio Graphs. WASAPI y Audio Graphs se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use WASAPI y Audio Graphs en lugar de Waveform Audio, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.

Para ver si un dispositivo admite un formato determinado (estándar o no estándar), puede llamar a la función waveOutOpen con la marca WAVE_FORMAT_QUERY. En el ejemplo siguiente se usa esta técnica para determinar si un dispositivo de audio de forma de onda admite un 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 la compatibilidad con formato no estándar también se aplica a los dispositivos de entrada de audio de forma de onda. La única diferencia es que la función waveInOpen se usa en lugar de waveOutOpen para consultar la compatibilidad con formatos.

Para determinar si alguno de los dispositivos de audio de forma de onda en un sistema admite un formato de onda determinado, use la técnica que se muestra en el ejemplo anterior, pero especifique la constante WAVE_MAPPER para el parámetro uDeviceID .