В общем, первый раз с таким сталкиваюсь. Записываю с микрофона, используя функции waveInOpen, waveInStart и т.д. При записи 8битного аудио все нормально: в dwBytesRecorded вполне ожидаемое значение. При записи 16битного аудио происходят 2 вещи.
1. Когда буффер заполняется до конца, приложение получает сообщение MM_WIM_DATA, и, затем делаю waveInClose(), пишу вав-файл и все нормально. И, кстати, dwBytesRecorded == размеру буффера, все нормально.
2. Когда при записи нажимаю кнопку стоп, вызывается функция waveInReset(), НО: dwBytesRecorded ==0. Сам буффер заполняется верно, слушала, но вот его длина почему-то ==0. (При восьмибитном аналогиное работает правильно)
Кстати, все делалось ну совсем как вот здесь:
http://www.cppbuilderdevjournal.com/articles/issues/9810/Low-level_wave_audio__part_3.htm