MME USB Device Disconnection can break MME stack
Posted: Mon Jan 09, 2017 7:38 am
Selecting MME USB Audio Devices in Voicemeeter can generate problem if you plan to disconnect/reconnect your device.
in this case it's recommended to use WDM interface instead.
TEST on WIN7 (32 or 64bits) shows that any input device disconnection (used with MME interface) breaks all MME Stack: All devices connected with MME interface will be stopped (recording and playback devices) and any MME functions will become blocking (deadlock)... that's why any further action regarding audio device will freeze Voicemeeter (like opening device menu or shutting down Voicemeeter ... because it will call MME functions and freeze)
[WIN API: waveinStop() or even waveInGetNumDevs() are placed in deallock (call does not return).]
TEST on WIN8.1 (64bits) shows the same behavior.
TEST on WIN10 (64bits) shows the same behavior.
CONCLUSION: do not use MME audio interface with USB audio device (if you plan to remove it while running).
in this case it's recommended to use WDM interface instead.
TEST on WIN7 (32 or 64bits) shows that any input device disconnection (used with MME interface) breaks all MME Stack: All devices connected with MME interface will be stopped (recording and playback devices) and any MME functions will become blocking (deadlock)... that's why any further action regarding audio device will freeze Voicemeeter (like opening device menu or shutting down Voicemeeter ... because it will call MME functions and freeze)
[WIN API: waveinStop() or even waveInGetNumDevs() are placed in deallock (call does not return).]
TEST on WIN8.1 (64bits) shows the same behavior.
TEST on WIN10 (64bits) shows the same behavior.
CONCLUSION: do not use MME audio interface with USB audio device (if you plan to remove it while running).