Работа с ролями устройств

API MMDevice поддерживает роли устройств. Перечисление ERole определяет роли устройства, поддерживаемые API MMDevice.

Примечание.

Хотя API MMDevice поддерживает роли устройств, пользовательский интерфейс в Windows Vista не реализует поддержку этой функции.

 

Приложение может использовать API MMDevice для поддержки ролей устройств с помощью методов IMMDeviceEnumerator::GetDefaultAudioEndpoint и IMMNotificationClient::OnDefaultDeviceChanged. Однако пользовательский интерфейс в Windows Vista не поддерживает назначение отдельных ролей различным устройствам. В Windows Vista пользовательский интерфейс позволяет пользователю выбрать звуковое устройство по умолчанию для отрисовки и звукового устройства по умолчанию для записи. Когда пользователь выбирает устройство отрисовки или записи по умолчанию, система назначает всем трем ролям устройств (eConsole, eMultimedia и eCommunications) на это устройство. Приложения не могут изменять роли, назначенные устройствам конечной точки аудио. Операционная система позволяет назначать роли устройства только пользователю.

Клиент может регистрироваться для получения уведомления от API MMDevice каждый раз, когда происходит изменение ролей на устройствах аудио конечной точки. При перемещении роли с одного устройства на другое клиент может выбрать, следует ли продолжать воспроизводить (или записывать) потоки через то же устройство или переключать потоки на другое устройство. По умолчанию потоки продолжают воспроизводиться (или записываться) с помощью исходного устройства. Чтобы переключить потоки на другое устройство, клиент должен удалить потоки на исходном устройстве и создать потоки замены на новом устройстве. В Windows 7 клиент может прослушивать новые уведомления, чтобы реализовать простой коммутатор без прерывания воспроизведения или сеанса записи. Дополнительные сведения см. в разделе "Маршрутизация потоков".

Если вы планируете использовать Windows Vista для тестирования приложения, можно настроить тестовую среду, чтобы убедиться, что приложение работает должным образом, когда пользователь может назначать отдельные роли устройств разным устройствам. Чтобы узнать больше, отправьте электронное письмо по адресу uaa@microsoft.com.

Устройства связи

Пользовательский интерфейс Windows 7 имеет возможность добавления устройств связи. Панель управления звуком позволяет пользователю выбрать устройство связи по умолчанию для отрисовки и записи аудиопотока. По умолчанию при подключении нового устройства к компьютеру операционная система выполняет автоматическое обнаружение ролей и определяет, подходит ли устройство для роли связи. Нацелив устройства связи, вы можете разрабатывать приложения, использующие ОСНОВНЫЕ API аудио для реализации решений для связи с пк-телефоном. Например, приложение VoIP может назначать входные и выходные потоки голосовых и выходных потоков устройствам конечной точки по умолчанию с ролью eCommunications. Как и любой другой поток, приложение связи должно получить ссылку на конечную точку устройства связи путем вызова IMMDeviceEnumerator::GetDefaultAudioEndpoint. В этом вызове приложение должно указать eCommunications в параметре Role . Операции потока WASAPI в потоке, открытые на устройстве связи, похожи на любой другой аудиопоток. Приложение связи может улучшить взаимодействие с пользователем, реализуя такие поведение, как утка, обрабатывая уведомления из конечной точки устройства. Дополнительные сведения см. в разделе "Использование устройства связи".

Автоматическое обнаружение ролей устройств

Рассмотрим сценарий, в котором компьютер имеет устройство отрисовки по умолчанию, динамики и устройство записи по умолчанию, микрофон. Пользователь подключает usb-гарнитуру к компьютеру. После установки соответствующих драйверов операционная система пытается определить роль, назначаемую для нового звукового устройства.

В Windows 7 функция обнаружения ролей устройства значительно улучшена, чтобы определить соответствующие роли, подходящие для звуковых устройств. Все звуковые устройства содержат набор параметров конфигурации, заполненных ИЗГОТОВИТЕЛЕМ устройств, которые помогают системе решить, как использовать устройство. К этим параметрам относятся такие сведения, как физическое расположение звукового разъема, тип устройства, подтип джека и возможности обнаружения, чтобы система может определить, подключено ли устройство. Извлекая эти значения с устройства, операционная система определяет роль, которую нужно назначить устройству. В этом сценарии система запросила устройство USB-гарнитуры, выполнила автоматическое обнаружение ролей и решила, что устройство лучше всего подходит для связи.

Приложение также может получить сведения о джеке с помощью ОСНОВНЫХ API аудио. Дополнительные сведения см. в разделе IKsJackDescription и IKsJackDescription2.

Роли устройства