Метод IMMDeviceEnumerator::EnumAudioEndpoints (mmdeviceapi.h)

Метод EnumAudioEndpoints создает коллекцию звуковых конечных устройств, соответствующих указанным критериям.

Синтаксис

HRESULT EnumAudioEndpoints(
  [in]  EDataFlow           dataFlow,
  [in]  DWORD               dwStateMask,
  [out] IMMDeviceCollection **ppDevices
);

Параметры

[in] dataFlow

Направление потока данных для устройств конечных точек в коллекции. Вызывающий объект должен задать для этого параметра одно из следующих значений перечисления EDataFlow :

eRender

eCapture

eAll

Если вызывающий объект указывает eAll, метод включает в коллекцию конечные точки отрисовки и записи.

[in] dwStateMask

Состояние или состояния конечных точек, которые должны быть включены в коллекцию. Вызывающий объект должен задать для этого параметра побитовое ИЛИ одной или нескольких из следующих констант DEVICE_STATE_XXX :

DEVICE_STATE_ACTIVE

DEVICE_STATE_DISABLED

DEVICE_STATE_NOTPRESENT

DEVICE_STATE_UNPLUGGED

Например, если вызывающий объект задает для параметра dwStateMask значение DEVICE_STATE_ACTIVE | DEVICE_STATE_UNPLUGGED метод включает конечные точки, которые активны или отключены от разъемов, но исключает конечные точки, которые находятся на аудиоадаптерах, которые были отключены или отсутствуют. Чтобы включить все конечные точки, независимо от состояния, задайте dwStateMask = DEVICE_STATEMASK_ALL.

[out] ppDevices

Указатель на переменную указателя, в которую метод записывает адрес интерфейса IMMDeviceCollection объекта device-collection. С помощью этого метода вызывающий объект получает подсчитываемую ссылку на интерфейс . Вызывающий объект отвечает за освобождение интерфейса, когда он больше не нужен, путем вызова метода Release интерфейса. Если вызов EnumAudioEndpoints завершается ошибкой , *ppDevices имеет значение NULL.

Возвращаемое значение

Если метод завершается успешно, возвращает значение S_OK. В случае сбоя возможные коды возврата включают, помимо прочего, значения, показанные в следующей таблице.

Код возврата Описание
E_POINTER
Параметр ppDevices имеет значение NULL.
E_INVALIDARG
Параметр dataFlow или dwStateMask находится вне диапазона.
E_OUTOFMEMORY
Недостаточно памяти.

Комментарии

Например, следующий вызов перечисляет все устройства конечных точек отрисовки звука, которые в настоящее время активны (присутствуют и не отключены):


  hr = pDevEnum->EnumAudioEndpoints(
                   eRender, DEVICE_STATE_ACTIVE,
                   &pEndpoints);

В предыдущем фрагменте кода переменная hr имеет тип HRESULT, pDevEnum — указатель на интерфейс IMMDeviceEnumerator , а pEndpoints — указатель на интерфейс IMMDeviceCollection .

Примеры

Пример кода, который вызывает метод EnumAudioEndpoints , см. в разделе Свойства устройства.

Требования

   
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header mmdeviceapi.h

См. также раздел

Интерфейс IMMDeviceCollection

Интерфейс IMMDeviceEnumerator