掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
WaveInProc の中から VB を callback するには? (ID:82108)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
C で 音声入力を処理する DLL を作成しました.この DLL に “AddressOf” を使って,VB 側で作成した callback routine を知らせておいて,DLL が WIM_DATA を受け取ったところでそ れを呼びました. すると,VB の callback routine に入った所で memory fault で落ちてしまいます.何故でしょう? 同じ DLL を同じように使用する C で作成した program は全く 問題なく動作します.また,同じ VB の callback routine でも WIM_DATA を受け取った場合以外(例えば timer の満了時など) では問題を起こしません. ====================================================== C 側(Thread を起こして dummy の Window を create たり していますがその辺りは省略.) HANDLE hThisModule; BOOL APIENTRY DllMain(HANDLE hModule, ...) { if (ulReason == DLL_PROCESS_ATTACH) { m_hThisModule = hModule; ... } ... return TRUE; } EXPORT void CALLBACK SetCallbackFunction(pfn) { ... pfnVbCallBack = (void (CALLBACK *)(void))pfn; ... } EXPORT void CALLBACK OpenWaveInput() { ... MMRESULT mmresult = waveInOpen(hWaveIn, ...); ... } void CALLBACK WaveInProc(HWAVEIN hwi, UINT uMsg, ...) { switch (uMsg) { ... case MM_WIM_DATA: ... (*pfnVbCallBack)(); ... ... } ... } ------------------------------------------------------ VB 側 ... Private Declare Sub SetFuncAddr ... Private Declare Sub OpenWaveInput ... ... どこか… OpenWaveInput SetFuncAddr AddressOf VbCallBack ... Public Sub VbCallBack() ここで落ちる… ======================================================
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.