(之前最好调用 waveInGetNumDevs 看看有没有可用的设备)
waveInOpen (该处用 WAVEFORMATEX 结构指定音频格式)
waveInPrepareHeader (该处用 WAVEHDR 结构的 lpData 成员指定缓冲首地址)
waveInAddBuffer
waveInStart
(录制中....)
waveInStop (warning:一定要缓冲满了才返回)
waveInUnprepareHeader
waveInClose
需要指出的是,上面的代码你不能随心所欲的停止录音过程(如果你指定的缓冲非常大,比方说足够录音一个小时,那么你就要乖乖的等上一个小时),如果希望马上停止,请使用下面的方法。
waveInStart
(录制中....)
(n 时间后,用户提出停止请求)
waveInGetPosition (保留该值,用来设置 WAVEHDR 结构的 dwBytesRecorded 成员)
waveInReset
(重新设置 WAVEHDR 结构的 dwBytesRecorded 成员)
需要说明一下,正常情况下录音以后,总共耗费的内存(以字节算) 会保存在WAVEHDR 结构的 dwBytesRecorded 成员中,可用的音频裸数据当然就放进你指定的内存缓冲中去了,你大可不必等 waveInUnprepareHeader 就可以马上拿来用了。