使用事件回调处理驱动程序消息

若要使用事件回调,请使用 CreateEvent 函数创建手动重置事件。 在调用 waveOutOpen 函数时,为 fdwOpen 参数指定CALLBACK_EVENT。 调用 waveOutPrepareHeader 函数后,但在将波形音频数据发送到设备之前,通过调用 ResetEvent 函数将事件置于非对齐状态。 然后,在检查是否在 WAVEHDR 结构的 dwFlags 成员中设置WHDR_DONE标志的循环中,调用 WaitForSingleObject 函数,将事件句柄和超时值指定为参数。

由于事件回调未收到特定的关闭、完成或打开通知,因此应用程序可能需要在事件发生后检查它正在等待的进程的状态。 在 WaitForSingleObject 返回之前,可能已经完成了许多任务。

音频数据块