MMDevice API 정보

MMDevice(Windows 멀티미디어 디바이스) API를 사용하면 오디오 클라이언트가 오디오 엔드포인트 디바이스를 검색하고, 해당 기능을 확인하고, 해당 디바이스에 대한 드라이버 인스턴스를 만들 수 있습니다.

헤더 파일 Mmdeviceapi.h는 MMDevice API의 인터페이스를 정의합니다.

MMDevice API는 여러 인터페이스로 구성됩니다. 이 중 첫 번째는 IMMDeviceEnumerator 인터페이스입니다. MMDevice API의 인터페이스에 액세스하기 위해 클라이언트는 다음 코드 조각과 같이 CoCreateInstance 함수를 호출하여 디바이스 열거자 개체의 IMMDeviceEnumerator 인터페이스에 대한 참조를 가져옵니다.

  const CLSID CLSID_MMDeviceEnumerator = __uuidof(MMDeviceEnumerator);
  const IID IID_IMMDeviceEnumerator = __uuidof(IMMDeviceEnumerator);
  hr = CoCreateInstance(
         CLSID_MMDeviceEnumerator, NULL,
         CLSCTX_ALL, IID_IMMDeviceEnumerator,
         (void**)&pEnumerator);

앞의 코드 조각에서 CLSID_MMDeviceEnumerator 및 IID_IMMDeviceEnumerator MMDeviceEnumerator 클래스 개체 및 IMMDeviceEnumerator 인터페이스에 특성으로 연결된 GUID 값입니다. CoCreateInstance 호출은 이러한 값을 참조로 전달합니다. 변수 hrHRESULT 형식이고 변수 pEnumerator 는 디바이스 열거자 개체의 IMMDeviceEnumerator 인터페이스에 대한 포인터입니다. IMMDeviceEnumerator 는 오디오 엔드포인트 디바이스를 열거하는 메서드를 제공합니다. __uuidof 연산자, CoCreateInstance 함수 및 CLSCTX_Xxx 상수에 대한 자세한 내용은 Windows SDK 설명서를 참조하세요.

IMMDeviceEnumerator 인터페이스를 통해 클라이언트는 MMDevice API의 다른 인터페이스에 대한 참조를 가져올 수 있습니다. MMDevice API는 다음 인터페이스를 구현합니다.

인터페이스 설명
IMMDevice 오디오 디바이스를 나타냅니다.
IMMDeviceCollection 오디오 디바이스의 컬렉션을 나타냅니다.
IMMDeviceEnumerator 오디오 디바이스를 열거하는 메서드를 제공합니다.
IMMEndpoint 오디오 엔드포인트 디바이스를 나타냅니다.

 

또한 오디오 엔드포인트 디바이스의 상태 변경에 대한 알림이 필요한 MMDevice API의 클라이언트는 다음 인터페이스를 구현해야 합니다.

인터페이스 설명
IMMNotificationClient 오디오 엔드포인트 디바이스가 추가 또는 제거되거나, 디바이스의 상태 또는 속성이 변경되거나, 디바이스에 할당된 기본 역할이 변경될 때 알림을 제공합니다.

 

오디오 엔드포인트 디바이스

프로그래밍 참조