나의 SW개발 이야기/SW개발 일반

Windows에서 Default Audio Input (Microphone) 연결 여부 확인

Piano2sky 2019. 7. 30. 10:59
Default Audio Input - Microphone

Microphone이 연결 되지 않은 경우, Input Stream으로 Default Audio Input을 설정하는 코드를 사용할 경우, 때에 따라서 Kernel 관련 런타임 에러가 발생하는 경우가 있다. 노트북처럼 Built-in 마이크가 있는 경우는 괜찮지만 Desktop 처럼 마이크를 직접 연결하는 경우에 발생한다.
이를 방지하기 위해 Default Audio Input 설정하기 전에 마이크 연결 여부를 확인하여 Error/Exception을 Throw할 수 있다.


[Sample Code] [C++] [Win32]
#include <mmdeviceapi.h>
...
...

CComPtr<IMMDeviceEnumerator> pEnumerator;
CComPtr<IMMDevice> pDevice;
hr = CoCreateInstance(__uuidof(MMDeviceEnumerator), NULL,
CLSCTX_ALL, IID_PPV_ARGS(&pEnumerator));
if (SUCCEEDED(hr))
{
    hr = pEnumerator->GetDefaultAudioEndpoint(eCapture, eConsole, &pDevice);
}

if (!pDevice || hr == ERROR_NOT_FOUND) 
{
    // In case of Default Audio Input Not Connected
    // Throw Some Error/Exception
}
else
{
    // In case of Default Audio Input Connected
    // Do Set Default Audio Input as a Input Stream}
}