私は次のような状況に陥っています。マシンにはフリッツISDNカードがあります。このデバイスのwave outで特定のwaveファイルを再生するプロセスがあります(ISDN接続は起動時に作成され、永続化されます)。シナリオは簡単です。必要に応じて、以前に開いたウェーブデバイス(もちろん問題なく初期化されたものすべて)でwaveOutWrite()
が呼び出され、コールバック関数はMM_WOM_DONE
msgが再生が完了したことを知ります。Waveファイルをすぐに再生する(C++、Windows)
しかし、波が数秒続くにもかかわらず、MM_WOM_DONE
というメッセージがwaveOutWrite()
を呼び出した直後に届いています(プロセスやマシンで何も変更されていない)。エラーは報告されていませんが、ファイルが再生されたように見えますが、長さはゼロです(そうでない場合)。私はまたwaveOutReset()
が私のプロセスによって呼び出されなかったと確信しています(それはまた、上記のメッセージの送信を引き起こすでしょう)。以前は、TAPIドライバを再インストールするだけで解決できるという奇妙な問題を以前から持っていました。今回は何らかの理由でこれをもう一度実行するのは問題で、もっと分析的なアプローチを試みています:)このような行動を引き起こす可能性のある提案はありますか? ISDN回線のもう一方の端に何かがあるかもしれませんか?
http://blogs.msdn.com/larryosterman/archive/2009/02/19/playsound-xxx-snd-memory-snd-async-is-almost-always-a-bad-idea.aspx –