Verwenden eines Ereignisrückrufs zum Verarbeiten von Treibermeldungen

Um einen Ereignisrückruf zu verwenden, verwenden Sie die CreateEvent-Funktion, um ein Ereignis für die manuelle Zurücksetzung zu erstellen. Geben Sie im Aufruf der waveOutOpen-Funktion CALLBACK _ EVENT für den fdwOpen-Parameter an. Nachdem Sie die waveOutPrepareHeader-Funktion aufgerufen haben, aber bevor Sie Waveform-Audiodaten an das Gerät senden, setzen Sie das Ereignis in einen nicht signalierten Zustand, indem Sie die ResetEvent-Funktion aufrufen. Rufen Sie dann in einer Schleife, die überprüft, ob das WHDR _ DONE-Flag im dwFlags-Member der WAVEHDR-Struktur festgelegt ist, die WaitForSingleObject-Funktion auf, und geben Sie als Parameter das Ereignishandle und einen Time out-Wert an.

Da Ereignisrückrufe keine spezifischen Benachrichtigungen zum Schließen, Fertig- oder Öffnen empfangen, muss eine Anwendung möglicherweise den Status des Prozesses überprüfen, auf den sie nach dem Auftreten des Ereignisses wartet. Es ist möglich, dass eine Reihe von Aufgaben bis zur Rückgabe von WaitForSingleObject abgeschlossen sein könnte.

Audiodatenblöcke