OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

「WaveIn~」関数について。

  • すぐに回答を!
  • 質問No.125557
  • 閲覧数501
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 50% (5/10)

rc = waveInPrepareHeader(hwi,lpwh,sizeof(WAVEHDR));
のあと、「無効なパラメータがシステム機能に渡されました」となってしまいます。
ちなみに返ってきている値は「11」で、
どのエラーにもあてはまらないようです。
いったい何が原因なのか、
そして、どうすればいいのかがさっぱりわからず、困っています。
誰か教えてください‥‥‥。
デバイスのオープンは出来ている感じです‥‥。

変数の宣言(?)はプログラムの最初に、以下のように設定しています。
WAVEHDR wh;
HWAVEIN hwi;
HWND hWnd;
WAVEFORMATEX wfx;
MMRESULT rc;
LPWAVEHDR lpwh;

もし、必要な情報が不足しているならいって下さい。
質問の意味がわからない、とか‥‥‥。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全2件)

  • 回答No.1
レベル14

ベストアンサー率 50% (1122/2211)

まったく WAVE 関連はやったことが無いのですが、質問の範囲から ありそうな間違いを。 > WAVEHDR wh; > LPWAVEHDR lpwh; > rc = waveInPrepareHeader(hwi,lpwh,sizeof(WAVEHDR)); lpwh = &wh; rc = waveInPrepareHeader(hwi,lpwh,s ...続きを読む
まったく WAVE 関連はやったことが無いのですが、質問の範囲から
ありそうな間違いを。

> WAVEHDR wh;
> LPWAVEHDR lpwh;
> rc = waveInPrepareHeader(hwi,lpwh,sizeof(WAVEHDR));

lpwh = &wh;
rc = waveInPrepareHeader(hwi,lpwh,sizeof(WAVEHDR));

ってやってますか?

後、他の API でもよくありがちな話として、

・WAVEHDR は、0でクリアしておく
・WAVEHDR がバージョンのような数字をメンバに持っていて、それが不当
・WAVEHDR のメンバで領域を割り当てておくようなところがあって、それをやってない

なんてところを思いつきますが。

# WAVE 未経験ですが、一応、計算機屋の端くれなので「専門家」にチェックを入れてます
補足コメント
nyako

お礼率 50% (5/10)

返事が遅くなりましてもうしわけありません。

lpwh=&wh;
は、やっていませんでした。
でも、追加して実行しても結果は変わりませんでした‥‥。

WAVEHDRは0でクリアしてあります。

>・WAVEHDR がバージョンのような数字をメンバに持っていて、それが不当
>・WAVEHDR のメンバで領域を割り当てておくようなところがあって、それをやってない

の2点に関しては‥‥‥意味がよくわかりません‥‥。

ZeroMemory(&wh,sizeof(WAVEHDR));
wh.lpData = (char *)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,DATABLOCK_SIZE);
wh.dwBufferLength = DATABLOCK_SIZE;

ということはやっているのですが、これでは不十分でしょうか‥‥?
投稿日時 - 2001-09-04 10:44:11
  • 回答No.2
レベル6

ベストアンサー率 23% (3/13)

ずいぶん時間がたっていますが、もう解決されたでしょうか? 実際に使ったことはないのですが、ドキュメント&サンプルをみた範囲で。 エラーは MMSYSERR_INVALPARAM(11)でパラメータエラーです。 怪しそうなのは  >デバイスのオープンは出来ている感じです。  ということですが、waveInOpen()は成功していますか。    DATABLOCK_SIZ ...続きを読む
ずいぶん時間がたっていますが、もう解決されたでしょうか?

実際に使ったことはないのですが、ドキュメント&サンプルをみた範囲で。

エラーは MMSYSERR_INVALPARAM(11)でパラメータエラーです。


怪しそうなのは
 >デバイスのオープンは出来ている感じです。
 ということですが、waveInOpen()は成功していますか。
 
 DATABLOCK_SIZEっていくつでしょう。


VC++のヘルプで waveInPrepareHeader を調べると
 DIALOGS.C (コード)
 DDREC.EXE (ダウンロード先)
があるので参考までに。
補足コメント
nyako

お礼率 50% (5/10)

相変わらず返事が遅くてすいません。

まだ解決していないのでまた補足させていただきます。

waveInOpen()は成功しているようです。
そのすぐあとにつけているprintf()が働いているので‥‥。

DATABLOCK_SIZEは327680Lです。
参考にしたプログラムにのっていた値そのままです(苦笑)。

ところで、VC++のヘルプとは、
マイクロソフトのHP上にあるのでしょうか?
それともVC++のヘルプキーからでしょうか?
どうもDIALOGS.Cとかは見当たらないのですが‥‥。
投稿日時 - 2001-09-13 11:03:08
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ