Использование обратного вызова события для управления воспроизведением в буфере
Чтобы использовать обратный вызов события, используйте функцию CreateEvent для получения дескриптора события. При вызове функции midiOutOpen укажите CALLBACK_EVENT для параметра dwFlags . После использования функции midiOutPrepareHeader , но перед отправкой событий MIDI на устройство, создайте событие без знака, вызвав функцию ResetEvent , указав дескриптор события, полученный createEvent. Затем в цикле, который проверяет, задан ли бит MHDR_DONE в элементе dwFlags структуры MIDIHDR , используйте функцию WaitForSingleObject , указав дескриптор события и значение времени ожидания INFINITE в качестве параметров.
Обратный вызов события задается любым действием, которое может вызвать обратный вызов функции.
Так как обратные вызовы событий не получают определенные уведомления о закрытии, завершении или открытии, приложению может потребоваться проверка состояние процесса, который оно ожидает после возникновения события. Вполне возможно, что несколько задач могут быть завершены к времени возврата WaitForSingleObject .