Windows的录音流程大致如下:。1 先查看本地机器是否拥有声音输入设备。2 获取声音输入设备的信息。一般上面的两部不是很必要,毕竟现在的电脑基本都拥有集成声卡。不过从稳定性和通用性看,还是很必要的。3 打开设备,获取设备句柄,传入对应的事件句柄。4 准备一个异步线程专门用于录音完成后的处理工作,并等待事件。5 通过设备句柄为其准备缓冲区。6 将准备好的缓冲区通过句柄添加到设备中。接下来属于系统的工作,正常情况下,在缓冲区被填满后,将会触发事件,来通知异步线程进行处理。获取声音信息后,要再次添加缓冲区,才能继续录音。有时在缓冲区的建立上,一般会采取栈分配或者堆分配的方式。栈分配内存的析构处理通过退栈完成,用户不用手动处理。但是堆分配的时候就会遇到麻烦,具体如下:。在准备缓冲区的时候会调用waveInPrepareHeader函数,这个函数调用后,为其分配的内存就无法通过delete或者free来释放了,因为在该函数调用后这块内存区域被锁定了。此时必须调用waveInUnprepareHeader函数才能解锁定,然后才能释放。但是在调用waveInPrepareHeader函数后,再接