MCIで録音するには?

解決


とし!  2007-07-17 17:59:56  No: 65674  IP: 192.*.*.*

はじめまして。
MCIで録音を開始したときに、アプリケーションが止まってしまいます。
デバッグしてみると、
HEAP[hatsuon.exe]: Invalid Address specified to RtlFreeHeap( 2e50000, 36f0000 )
というエラーが出ます。
プログラムは以下の通りです。
//録音開始ボタンを押したときの処理
void CHatsuonDlg::OnButton5() 
{

  MCIERROR err;
  MCI_RECORD_PARMS mciRecordParms;

  mciRecordParms.dwTo = 0;
  mciRecordParms.dwFrom = 0;

  err = mciSendCommand(mciOpenParms.wDeviceID,MCI_RECORD,MCI_RECORD_OVERWRITE,0);
  MciErrorCheck(err);
}
開発環境は、Windows 2000、Visual C++ 6.0、MFCです。

編集 削除
瀬戸っぷ  2007-07-18 00:23:20  No: 65675  IP: 192.*.*.*

MCI、ほとんど触ったことありませんが…

> mciRecordParms.dwTo = 0;
> mciRecordParms.dwFrom = 0;

> err = mciSendCommand(mciOpenParms.wDeviceID,MCI_RECORD,MCI_RECORD_OVERWRITE,0);

設定したmciRecordParmsがどこにも使われていないようですが?
mciOpenParmsがナニモノか…というのも気になりますか…

http://wisdom.sakura.ne.jp/system/winapi/media/mm8.html
# だとMCI_RECORD_PARMS使っていないんですよね…

編集 削除
とし!  2007-07-18 11:32:51  No: 65676  IP: 192.*.*.*

mciRecordParmsを使って、再度試してみましたが結果は同じでした…。
mciOpenParmsは、MCI_OPEN_PARMSの変数です。
上記サイトでは、mopと定義されています。

編集 削除
瀬戸っぷ  2007-07-23 23:46:56  No: 65677  IP: 192.*.*.*

MSDNでこんなの見つけました。
手順として何か抜けていないか確認してみては?

http://msdn2.microsoft.com/en-us/library/ms713226.aspx

編集 削除
とし!  2007-07-24 12:39:06  No: 65678  IP: 192.*.*.*

ありがとうございました。
開発するPCを変えたら、エラーはでなくなりました。
おそらく、前のPCのメモリーの容量が小さかったためのエラーだと思います。

編集 削除