通过轮询管理数据块

[与此页面关联的功能 波形音频是一项旧功能。 它已被 WASAPIAudio Graphs 取代。 WASAPIAudio Graphs 已针对Windows 10和Windows 11进行了优化。 如果可能,Microsoft 强烈建议新代码使用 WASAPI音频图 ,而不是 波形音频。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

除了使用回调函数,还可以轮询 WAVEHDR 结构的 dwFlags 成员,以确定音频设备何时完成数据块。 有时轮询 dwFlags 比等待另一种机制从驱动程序接收消息要好。 例如,调用 waveOutReset 函数以释放挂起的数据块后,可以立即轮询以确保在调用 waveOutUnprepareHeader 并释放数据块的内存之前已释放数据块。

可以使用 WHDR_DONE 标志来测试 dwFlags 成员。 只要在 WAVEHDR 结构的 dwFlags 成员中设置了WHDR_DONE标志,驱动程序就会完成数据块。