问题点
1.录音过程中拔出设备,程序死锁
// 添加缓存的之前需要检查设备是否存在
case WIM_DATA:
if (is_device_exsit_) { // 设备是否存在,可以通过获取设备信息来判断
// 预处理
waveInPrepareHeader(hWaveIn, phdr, sizeof WAVEHDR);
// 添加缓存
waveInAddBuffer(hWaveIn, phdr, sizeof(WAVEHDR));
}
- 注意: 在设备拔出的时候,回调函数里面检查设备信息,仍然能够得到设备信息。此时,添加buffer,程序死锁:
- 那么,就不能在同一个线程内去查询设备是否已经拔出了,因此,在open device的时候,改变数据获取方式,改用 CALLBACK_THREAD 的方式
waveInOpen(&wave_in_,device_id_, &wave_formate_, (DWORD)thread_id, DWORD(this), CALLBACK_THREAD);
探讨了在录音过程中因设备拔出导致的程序死锁问题。通过检查设备状态并在不同线程中操作,避免了死锁现象。关键在于使用CALLBACK_THREAD方式重新配置设备。
4738

被折叠的 条评论
为什么被折叠?



