3

我有以下情况。在一台机器上有一个Fritz ISDN卡。有一个进程负责在此设备的波形输出上播放某个波形文件(ISDN连接在启动时建立并保持不变)。这个场景很简单,只要需要,进程就会调用waveOutWrite()先前打开的 wave 设备(一切都初始化了,当然没有任何问题),并且回调函数等待MM_WOM_DONEmsg 知道播放已经完成。

然而,几天后(过程和机器都没有改变)MM_WOM_DONE消息在调用后立即出现,waveOutWrite()即使波持续了几秒钟。再次没有报告错误,看起来文件已播放但长度为零(事实并非如此)。我也确信waveOutReset()我的进程没有调用它(它也会触发发送提到的消息)。过去我曾经遇到过一些奇怪的问题,只需重新安装TAPI驱动程序即可解决。这次由于某种原因,我再次执行该操作是有问题的,我正在尝试更多的分析方法:)。有什么建议可能导致这种行为吗?也许在ISDN线路的另一端有什么东西?

4

3 回答 3

3

根据您的描述,您正在异步播放。您确定当时没有清理 wav 文件的后备内存吗?

于 2008-09-24T19:38:03.403 回答
2

我没有太多时间在谷歌上搜索这个,但我知道 Larry Osterman 或 Raymond Chen 都在博客上写过类似的情况。

当我有更多时间查看这个问题是否仍然存在时,我会稍后再回来查看。

于 2008-08-14T14:43:52.520 回答
0

不播放声音时返回值是多少?如果您收到 MMSYSERR_NOERROR ,则表明驱动程序错误地向操作系统报告缓冲区已被处理。

WAV 文件本身是否发生了变化?此博客条目表明对元数据进行了一些非常深入的验证。

于 2008-08-18T11:33:56.293 回答