2008-08-13 8 views
3

私は次のような状況に陥っています。マシンにはフリッツISDNカードがあります。このデバイスのwave outで特定のwaveファイルを再生するプロセスがあります(ISDN接続は起動時に作成され、永続化されます)。シナリオは簡単です。必要に応じて、以前に開いたウェーブデバイス(もちろん問題なく初期化されたものすべて)でwaveOutWrite()が呼び出され、コールバック関数はMM_WOM_DONE msgが再生が完了したことを知ります。Waveファイルをすぐに再生する(C++、Windows)

しかし、波が数秒続くにもかかわらず、MM_WOM_DONEというメッセージがwaveOutWrite()を呼び出した直後に届いています(プロセスやマシンで何も変更されていない)。エラーは報告されていませんが、ファイルが再生されたように見えますが、長さはゼロです(そうでない場合)。私はまたwaveOutReset()が私のプロセスによって呼び出されなかったと確信しています(それはまた、上記のメッセージの送信を引き起こすでしょう)。以前は、TAPIドライバを再インストールするだけで解決できるという奇妙な問題を以前から持っていました。今回は何らかの理由でこれをもう一度実行するのは問題で、もっと分析的なアプローチを試みています:)このような行動を引き起こす可能性のある提案はありますか? ISDN回線のもう一方の端に何かがあるかもしれませんか?

答えて

2

Googleにはこれほど多くの時間はありませんが、Larry OstermanとRaymond Chenのどちらも同じような状況についてブログに書いています。

この質問がまだ開いているかどうかを確認する時間がある場合は、後で確認します。

+0

http://blogs.msdn.com/larryosterman/archive/2009/02/19/playsound-xxx-snd-memory-snd-async-is-almost-always-a-bad-idea.aspx –

0

サウンドが再生されないときの戻り値は何ですか? MMSYSERR_NOERRORを取得すると、バッファが処理されたことをOSに誤って報告しているドライバを指しています。

WAVファイル自体は変更されていますか?このblog entryは、かなり詳細な検証がメタデータに対して行われたことを示しています。

0

サウンドが再生されないときの戻り値は何ですか? MMSYSERR_NOERRORを取得すると、バッファが処理されたことをOSに誤って報告しているドライバを指しています。

エラーが発生した場合、すべてが簡単になります:)。残念ながら、私はMMSYSERR_NOERRORを取得します。 wavefileは毎回生成されますが、発生する方法は変更されません。システムが何らかの理由で間違って報告したり、すべてを報告したりしないように見えます。生成されたファイルを詳しく見てみましょう。

Googleにはこれ以上の時間はありませんが、Larry OstermanとRaymond Chenのどちらも同様の状況についてブログに書いています。

私はLarry'sとRaymondのブログには行きましたが、役に立たないものは見つかりませんでした。波出力を使用する方法を説明しているLarryの記事の一部のみ。しかし、これは問題の解決には役に立たなかった。

+0

あなたが真に問題を解決していない限り、このような回答を掲示しないようにすべきです。これらの応答はコメントに属します。記録に関しては、Larry Ostermanの投稿は次のとおりです。http://blogs.msdn.com/larryosterman/archive/2009/02/19/playsound-xxx-snd-memory-snd-async-is-almost-always-a -bad-idea.aspx –

3

あなたの説明に基づいて、あなたは非同期で演奏しています。その時点でwavファイルのバッキングメモリがクリーンアップされていないことを確認してください。

関連する問題