Поделиться через


Использование обратного вызова события для управления буферным воспроизведением

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

Обратный вызов события задается любым, что может вызвать обратный вызов функции.

Поскольку обратные вызовы событий не получают конкретных уведомлений о закрытии, завершении или открытии, приложению может потребоваться проверить состояние процесса, которого оно ожидает, после того, как событие произойдёт. Возможно, ряд задач может быть выполнен к тому времени, как возвращается WaitForSingleObject.