Поделиться через


Сведения об API MMDevice

API мультимедийного устройства Windows (MMDevice) позволяет аудио-клиентам обнаруживать устройства конечной точки звука, определять их возможности и создавать экземпляры драйверов для этих устройств.

Файл заголовка Mmdeviceapi.h определяет интерфейсы в API MMDevice.

API MMDevice состоит из нескольких интерфейсов. Первым из них является интерфейс IMMDeviceEnumerator. Чтобы получить доступ к интерфейсам в API MMDevice, клиент получает ссылку на интерфейс IMMDeviceEnumerator объекта перечисления устройств, вызвав функцию CoCreateInstance, как показано в следующем фрагменте кода:

  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 — это значения GUID, присоединенные как атрибуты к объекту класса MMDeviceEnumerator и интерфейсу IMMDeviceEnumerator. Вызов CoCreateInstance передает эти значения по ссылке. Переменная типа HRESULT, а переменная pEnumerator hr — указатель на интерфейс IMMDeviceEnumerator объекта перечислителя устройств. IMMDeviceEnumerator предоставляет методы перечисления устройств конечной точки аудио. Сведения о операторе __uuidof, функции CoCreateInstance и константах CLSCTX_Xxx см. в документации по пакету SDK для Windows.

Через интерфейс IMMDeviceEnumerator клиент может получить ссылки на другие интерфейсы в API MMDevice. API MMDevice реализует следующие интерфейсы.

Интерфейс Description
IMMDevice Представляет звуковое устройство.
IMMDeviceCollection Представляет коллекцию звуковых устройств.
IMMDeviceEnumerator Предоставляет методы перечисления звуковых устройств.
IMMEndpoint Представляет устройство конечной точки аудио.

 

Кроме того, клиенты API MMDevice, требующие уведомления об изменениях состояния на устройствах аудио конечной точки, должны реализовать следующий интерфейс.

Интерфейс Description
IMMNotificationClient Предоставляет уведомления о добавлении или удалении устройства аудио конечной точки при изменении состояния или свойств устройства или при изменении роли по умолчанию, назначенной устройству.

 

Устройства аудиоконечной точки

Справочник по программированию