Condividi tramite


Determinazione del supporto del formato non standard

[La funzionalità associata a questa pagina , Waveform Audio, è una funzionalità legacy. È stato sostituito da WASAPI e grafici audio. WasAPI e grafici audio sono stati ottimizzati per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi grafici WASAPI e Audio anziché Waveform Audio, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Per verificare se un dispositivo supporta un formato specifico (standard o non standard), è possibile chiamare la funzione waveOutOpen con il flag WAVE_FORMAT_QUERY. Nell'esempio seguente viene usata questa tecnica per determinare se un dispositivo audio waveform supporta un formato specificato.

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

Questa tecnica per determinare il supporto del formato non standard si applica anche ai dispositivi di input audio waveform. L'unica differenza è che la funzione waveInOpen viene usata al posto di waveOutOpen per eseguire una query per il supporto del formato.

Per determinare se un particolare formato di dati audio waveform è supportato da uno dei dispositivi audio waveform in un sistema, usare la tecnica illustrata nell'esempio precedente, ma specificare la costante WAVE_MAPPER per il parametro uDeviceID .