funzione waveOutOpen (mmeapi.h)
La funzione waveOutOpen apre il dispositivo di output waveform-audio specificato per la riproduzione.
Sintassi
MMRESULT waveOutOpen(
LPHWAVEOUT phwo,
UINT uDeviceID,
LPCWAVEFORMATEX pwfx,
DWORD_PTR dwCallback,
DWORD_PTR dwInstance,
DWORD fdwOpen
);
Parametri
phwo
Puntatore a un buffer che riceve un handle che identifica il dispositivo di output open waveform-audio. Usare l'handle per identificare il dispositivo quando si chiamano altre funzioni di output waveform-audio. Questo parametro potrebbe essere NULL se il flag di WAVE_FORMAT_QUERY è specificato per fdwOpen.
uDeviceID
Identificatore del dispositivo di output waveform-audio da aprire. Può essere un identificatore di dispositivo o un handle di un dispositivo di input audio a onda aperta. È anche possibile usare il flag seguente anziché un identificatore di dispositivo:
Valore | Significato |
---|---|
WAVE_MAPPER | La funzione seleziona un dispositivo di output waveform-audio in grado di riprodurre il formato specificato. |
pwfx
Puntatore a una struttura WAVEFORMATEX che identifica il formato dei dati waveform-audio da inviare al dispositivo. È possibile liberare questa struttura immediatamente dopo averla passata a waveOutOpen.
dwCallback
Specifica il meccanismo di callback. Il valore deve essere uno dei seguenti:
- Puntatore a una funzione di callback. Per la firma della funzione, vedere waveOutProc.
- Handle di una finestra.
- Identificatore di thread.
- Handle a un evento.
- Valore NULL.
dwInstance
Dati dell'istanza utente passati al meccanismo di callback. Questo parametro non viene usato con il meccanismo di callback della finestra.
fdwOpen
Contrassegni per l'apertura del dispositivo. I valori seguenti sono definiti.
Valore | Significato |
---|---|
CALLBACK_EVENT | Il parametro dwCallback è un handle di eventi. |
CALLBACK_FUNCTION | Il parametro dwCallback è un indirizzo della routine di callback. |
CALLBACK_NULL | Nessun meccanismo di callback. Si tratta dell'impostazione predefinita. |
CALLBACK_THREAD | Il parametro dwCallback è un identificatore di thread. |
CALLBACK_WINDOW | Il parametro dwCallback è un handle di finestra. |
WAVE_ALLOWSYNC | Se questo flag è specificato, è possibile aprire un dispositivo waveform-audio sincrono. Se questo flag non viene specificato durante l'apertura di un driver sincrono, il dispositivo non verrà aperto. |
WAVE_MAPPED_DEFAULT_COMMUNICATION_DEVICE |
Se questo flag viene specificato e il parametro uDeviceID è WAVE_MAPPER, la funzione apre il dispositivo di comunicazione predefinito.
Questo flag si applica solo quando uDeviceID è uguale a WAVE_MAPPER. Nota Richiede Windows 7
|
WAVE_FORMAT_DIRECT | Se questo flag viene specificato, il driver ACM non esegue conversioni nei dati audio. |
WAVE_FORMAT_QUERY | Se questo flag viene specificato, waveOutOpen esegue una query sul dispositivo per determinare se supporta il formato specificato, ma il dispositivo non viene effettivamente aperto. |
WAVE_MAPPED | Se questo flag viene specificato, il parametro uDeviceID specifica un dispositivo waveform-audio a cui eseguire il mapping da parte del mapper wave. |
Valore restituito
Restituisce MMSYSERR_NOERROR se ha esito positivo o un errore in caso contrario. I valori di errore possibili includono quanto segue.
Codice restituito | Descrizione |
---|---|
|
La risorsa specificata è già allocata. |
|
L'identificatore del dispositivo specificato non è compreso nell'intervallo. |
|
Non è presente alcun driver di dispositivo. |
|
Impossibile allocare o bloccare la memoria. |
|
Tentativo di apertura con un formato waveform-audio non supportato. |
|
Il dispositivo è sincrono ma waveOutOpen è stato chiamato senza usare il flag di WAVE_ALLOWSYNC . |
Commenti
Usare la funzione waveOutGetNumDevs per determinare il numero di dispositivi di output waveform-audio presenti nel sistema. Se il valore specificato dal parametro uDeviceID è un identificatore del dispositivo, può variare da zero a uno minore del numero di dispositivi presenti. La costante WAVE_MAPPER può essere usata anche come identificatore del dispositivo.
La struttura a cui punta pwfx può essere estesa per includere informazioni specifiche del tipo per determinati formati di dati. Ad esempio, per i dati PCM, viene aggiunto un valore UINT aggiuntivo per specificare il numero di bit per esempio. Usare la struttura PCMWAVEFORMAT in questo caso. Per tutti gli altri formati waveform-audio, usare la struttura WAVEFORMATEX per specificare la lunghezza dei dati aggiuntivi.
Se si sceglie di avere una finestra o un thread ricevono informazioni di callback, i messaggi seguenti vengono inviati alla funzione della routine della finestra per indicare lo stato di avanzamento dell'output audio waveform: MM_WOM_OPEN, MM_WOM_CLOSE e MM_WOM_DONE.
Meccanismo di callback
I parametri dwCallback e fdwOpen specificano come l'applicazione riceve una notifica sullo stato di avanzamento dell'output waveform-audio.Se fdwOpen contiene il flag CALLBACK_FUNCTION , dwCallback è un puntatore a una funzione di callback. Per la firma della funzione, vedere waveOutProc. Il parametro uMsg del callback indica lo stato di avanzamento dell'output audio:
Se fdwOpen contiene il flag CALLBACK_WINDOW , dwCallback è un handle in una finestra. La finestra riceve i messaggi seguenti, che indica lo stato di avanzamento: Se fdwOpen contiene il flag CALLBACK_THREAD , dwCallback è un identificatore di thread. Il thread riceve i messaggi elencati in precedenza per CALLBACK_WINDOW.Se fdwOpen contiene il flag CALLBACK_EVENT , dwCallback è un handle per un evento. L'evento viene segnalato ogni volta che lo stato del buffer waveform cambia. L'applicazione può usare WaitForSingleObject o WaitForMultipleObjects per attendere l'evento. Quando l'evento viene segnalato, è possibile ottenere lo stato corrente del buffer della forma onda controllando il membro dwFlags della struttura WAVEHDR . Vedere waveOutPrepareHeader.
Se fdwOpen contiene il flag CALLBACK_NULL , dwCallback deve essere NULL. In questo caso, non viene usato alcun meccanismo di callback.
Requisiti
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | mmeapi.h (includere Windows.h) |
Libreria | Winmm.lib |
DLL | Winmm.dll |
Vedi anche
Uso di una funzione di callback per elaborare i messaggi del driver
Uso di una finestra o di un thread per elaborare i messaggi del driver
Uso di un callback evento per elaborare i messaggi del driver