我有以下情况。在一台机器上有一张 Fritz ISDN 卡。有一个进程负责在此设备的波形上播放某个波形文件( ISDN 连接在启动时进行并且持久化)。方案很简单,只要需要,进程就会在之前打开的wave设备上调用waveOutWrite()
(当然所有内容都没有任何问题进行初始化),并且回调函数等待MM_WOM_DONE
msg知道回放已经完成。
由于过了几天(过程和机器都没有改变),MM_WOM_DONE
消息在调用waveOutWrite()
后立即出现,即使wave持续几秒钟。再次没有报告错误,看起来文件已播放但长度为零(事实并非如此)。我也确信我的进程没有调用waveOutReset()
(它也会触发发送上述消息)。我过去曾经遇到过一些奇怪的问题,只需重新安装 TAPI 驱动程序即可解决问题。这一次由于某种原因,我再次执行这个问题是有问题的,我正在尝试更多的分析方法:)。什么可能导致这种行为的任何建议?也许在 ISDN 行的另一端有什么东西?
答案 0 :(得分:3)
根据您的描述,您正在进行异步游戏。您确定在那段时间内没有清理wav文件的后备内存吗?
答案 1 :(得分:2)
我没有时间给谷歌这么多,但我知道Larry Osterman或Raymond Chen在博客中写过类似的情况。
如果我有更多时间看这个问题是否仍未解决,我会稍后再查看。
答案 2 :(得分:0)
声音无法播放时的返回值是多少?如果你得到MMSYSERR_NOERROR指向驱动程序错误地向操作系统报告缓冲区已被处理。
WAV文件本身是否已更改?这个blog entry表示对元数据进行了一些非常深入的验证。