ロゴ メインコンテンツへ
RSSフィード
「ソフトウェア開発」に関連する記事一覧

waveInProc で waveInAddBuffer を呼ぶとデッドロック

2015/03/15
(この記事の文字数: 522)

waveInOpen の dwCallback に CALLBACK_FUNCTION を指定した時に waveInProc コールバック内で waveInAddBuffer をコールすると、スレッドがフリーズして処理が返ってこなくなる問題に少しはまりました。

コールバックの外から呼ぶとフリーズしないので、メインスレッドの処理では何もしないようにしても直らない...と思ったら、MSDN の waveInProc のページにコールバックでシステム定義関数呼ぶなと書いてありました。

EnterCriticalSection、LeaveCriticalSection、midiOutLongMsg、midiOutShortMsg、OutputDebugString、PostMessage、PostThreadMessage、SetEvent、timeGetSystemTime、timeGetTime、timeKillEvent および timeSetEvent を除き、アプリケーションでコールバック関数内からシステム定義関数を呼び出さないようにしてください。ほかのウェーブ関数を呼び出すと、デッドロックの原因となります。

悩む前にドキュメントちゃんと読めってやつですね...


  このエントリーをはてなブックマークに追加  

<<「ソフトウェア開発」の記事一覧に戻る

<<「ソフトウェア開発」の次の記事
「ソフトウェア開発」の前の記事 >>

コメント(0 件)



コンテンツロード: 0.008 sec
Copyright(C)2006-2024 puarts All Rights Reserved