掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
WaveInProc の中から VB を callback するには? (ID:82114)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
waveInProc へ渡す関数で、それはVBの標準フォームに 書かれていますか? あと、環境ですが、VB6ですよネ? 私も昔その手のコードを書きましたが、音のサンプリングで waveInProcのコールバック関数は高速性を要求しますので、 昔はVBの関数を渡した場合、よくクラッシュした経験があ り、結果として、音の録音部分は、C言語側に書きました。 で、そのイベントをVBに返す部分のコーディングとしては そのC言語の部分を通常のDLLではなく、ActiveX OCX に したて、ActiveX の実装で返すことで切り抜けました。 また、waveInProc では、音の録音の為のバッファを高速に 応答しないと、バッファオーバーラン的クラッシュもあり、 VBで行うには、性能的問題があると思います。 waveInAddBuffer の部分のコーディングはどうなっています か? あと、Memory Fau;t の原因ですが、音が録音されてそのバッファ アドレスからデータを抜き出すのですが、そのアドレス域が、 ( LPSTR )GlobalAlloc( GPTR , AllocSize ); のように記述していました。 最初は、 ( LPSTR )HeapAlloc( GetProcessHeap() , HEAP_ZERO_MEMORY , AllocSize ); と記述していましたが、何か問題があったようで、GlobalAlloc に変更していました。よって、そのアドレスのデータエリアから データを抜き出すmemcpyへのアドレスの渡し方でfaultしていない でしょうか? この辺のデバッグを行うに、VBと連携してVCで行うには、 ちょっと無理があり・・・ブレークポイントをおいても、録音 部分(waveInProc)で、応答が返らないので、クラッシュ・・・ と言う現象もあります。たまたまですが、当時、SoftICEと言う デバッガを使ってfaultの原因追求を行いましたが、高価なデバ ッガではありましたが、難なく問題を発見・根絶することがで きました。 ご参考までに・・・ 以上。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.