次のコードを実行します。
void SoundOut()
{
HWAVEOUT wo;
WAVEHDR whdr;
whdr.dwBufferLength = std::vector<SampleType>::size() * m_format.nBlockAlign;
whdr.lpData = reinterpret_cast<LPSTR>(&(std::vector<SampleType>::front()));
whdr.dwFlags = 0;
cout << "waveOpen result " << waveOutOpen(&wo, WAVE_MAPPER, &m_format, 0, 0, CALLBACK_NULL) << endl;;
cout << "waveOutPrepareHeader" << waveOutPrepareHeader(wo, &whdr, sizeof(WAVEHDR)) << endl;;
cout << "waveOutWrite" << waveOutWrite(wo, &whdr, sizeof(WAVEHDR)) << endl;;
cout << "waveOutUnprepareHeader" << waveOutUnprepareHeader(wo, &whdr, sizeof(WAVEHDR)) << endl;;
cout << "waveOutClose" << waveOutClose(wo) << endl;;
};
stdout は次のようになります。
waveOpen result 0
waveOutPrepareHeader 0
waveOutWrite 0
waveOutUnprepareHeader 33
waveOutClose 33
SOUNDWIN.H ファイルによると、コード 33 は WAVERR_STILLPLAYING を意味します。しかし、サウンドはまったく聞こえず、waveOutWrite はすぐに戻ります (サウンド カードに 88000 サンプルを書き込みます)。この即時リターンはコード 33 を暗示していると思われますが、なぜ waveOutWrite がすぐにリターンし、何も聞こえないのでしょうか?
そして一般的に、waveOutWrite が正常に終了し、何も聞こえないのはなぜですか?
どこを見る?