Udostępnij przez


Użycie wywołania zwrotnego dla zdarzenia do przetwarzania komunikatów sterownika

[Funkcja skojarzona z tą stroną, Waveform Audio, jest starszą funkcją. Został zastąpiony przez WASAPI i Audio Graphs. WASAPI i Audio Graph s zostały zoptymalizowane pod kątem systemów Windows 10 i Windows 11. Firma Microsoft zdecydowanie zaleca, aby nowy kod używał WASAPI i Audio Graphs zamiast Waveform Audio, jeśli to możliwe. Firma Microsoft sugeruje, że istniejący kod, który używa starszych interfejsów API, należy przepisać go do korzystania z nowych interfejsów API, jeśli to możliwe.]

Aby użyć zdarzenia wywołania zwrotnego, użyj funkcji CreateEvent, aby utworzyć zdarzenie resetowania ręcznego. W wywołaniu funkcji waveOutOpen określ CALLBACK_EVENT dla parametru fdwOpen. Po wywołaniu funkcji waveOutPrepareHeader, ale przed wysłaniem danych audio wave do urządzenia, umieść zdarzenie w stanie niestanu sygnalizowanego, wywołując funkcję ResetEvent. Następnie, wewnątrz pętli, która sprawdza, czy flaga WHDR_DONE jest ustawiona w dwFlags członka struktury WAVEHDR, wywołaj funkcję WaitForSingleObject, podając jako parametry uchwyt zdarzenia i wartość limitu czasu.

Ponieważ wywołania zwrotne zdarzeń nie otrzymują konkretnych powiadomień o zamknięciu, zakończeniu lub otwarciu, aplikacja może potrzebować sprawdzenia stanu procesu, na który czeka po wystąpieniu zdarzenia. Istnieje możliwość, że do czasu, gdy WaitForSingleObject zakończy działanie, pewna liczba zadań mogła zostać wykonana.

bloki danych audio