Метод 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. В случае сбоя возможные коды возврата включают, помимо прочего, значения, показанные в следующей таблице.
Код возврата | Описание |
---|---|
|
Параметр ppDevices имеет значение NULL. |
|
Параметр dataFlow или dwStateMask находится вне диапазона. |
|
Недостаточно памяти. |
Комментарии
Например, следующий вызов перечисляет все устройства конечных точек отрисовки звука, которые в настоящее время активны (присутствуют и не отключены):
hr = pDevEnum->EnumAudioEndpoints(
eRender, DEVICE_STATE_ACTIVE,
&pEndpoints);
В предыдущем фрагменте кода переменная hr имеет тип HRESULT, pDevEnum — указатель на интерфейс IMMDeviceEnumerator , а pEndpoints — указатель на интерфейс IMMDeviceCollection .
Примеры
Пример кода, который вызывает метод EnumAudioEndpoints , см. в разделе Свойства устройства.
Требования
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 [только классические приложения] |
Целевая платформа | Windows |
Header | mmdeviceapi.h |