Использование обратного вызова события для обработки сообщений драйвера
Чтобы использовать обратный вызов события, используйте функцию CreateEvent , чтобы создать событие сброса вручную. В вызове функции waveOutOpen укажите CALLBACK_EVENT для параметра fdwOpen . После вызова функции waveOutPrepareHeader , но перед отправкой звуковых данных waveform на устройство, переведите событие в состояние без знака, вызвав функцию ResetEvent . Затем внутри цикла, который проверяет, установлен ли флаг WHDR_DONE в элементе dwFlags структуры WAVEHDR , вызовите функцию WaitForSingleObject , указав в качестве параметров дескриптор события и значение времени ожидания.
Так как обратные вызовы событий не получают определенные уведомления о закрытии, завершении или открытии, приложению может потребоваться проверка состояние процесса, который оно ожидает после возникновения события. Вполне возможно, что некоторые задачи могли бы быть завершены к моменту возврата WaitForSingleObject .
Связанные темы