Строки идентификатора конечной точки
В Windows Vista система создает строки идентификатора конечной точки для идентификации устройств аудио в системе. Строка идентификатора конечной точки — это строка, завершаемая значением null. Строка идентификатора конечной точки для конкретного устройства аудио конечной точки однозначно идентифицирует устройство среди всех устройств аудио конечной точки в системе.
Если система содержит два или более идентичных устройств аудиоадаптера, соответствующие устройства аудиоконечной точки будут иметь одинаковые понятные имена, но каждое устройство конечной точки будет иметь уникальную строку идентификатора конечной точки. Дополнительные сведения о получении понятного имени устройства конечной точки см. в разделе "Свойства устройства".
После получения экземпляра интерфейса IMMDevice для устройства конечной точки звука клиент может вызвать метод IMMDevice::GetId , чтобы получить строку идентификатора конечной точки для устройства. Клиент может использовать строку идентификатора конечной точки для создания экземпляра устройства аудио конечной точки позже или в другом процессе путем вызова метода IMMDeviceEnumerator::GetDevice.
Клиент может упорядочить получение уведомления при изменении состояния любого устройства аудио конечной точки. Для получения уведомлений клиент реализует интерфейс IMMNotificationClient и регистрирует этот интерфейс с помощью API MMDevice. При изменении состояния устройства конечной точки API MMDevice вызывает соответствующий метод в интерфейсе EDataFlow клиента. Одним из входных параметров метода является строка идентификатора конечной точки, которая определяет устройство конечной точки, состояние которого изменилось. Дополнительные сведения об EDataFlow см. в разделе "События устройства".
Устаревшие API аудио, такие как DirectSound и мультимедийные функции Windows, имеют собственные интерфейсы для перечисления и идентификации звуковых устройств. В Windows Vista эти интерфейсы были расширены для предоставления строк идентификатора конечной точки, определяющих устройства конечных точек, которые лежат в основе абстракций устройств, представленных API.
Во время перечисления устройств DirectSound DirectSound предоставляет строку идентификатора конечной точки для каждого устройства, которое оно перечисляет. Дополнительные сведения см. в разделе "События аудио" для устаревших звуковых приложений.
Чтобы получить строку идентификатора конечной точки для устаревшего устройства волны, используйте функцию waveOutMessage или waveInMessage, чтобы отправить DRV_QUERYFUNCTIONINSTANCEID сообщение драйверу устройства волны. Пример кода, показывающий использование этого сообщения, см. в разделе "Роли устройств" для устаревших приложений мультимедиа Windows.
Дополнительные сведения об использовании основных ИНТЕРФЕЙСов API аудио для улучшения приложений, использующих устаревшие API аудио, см. в разделе "Взаимодействие с устаревшими API аудио".
Клиенты должны рассматривать содержимое строки идентификатора конечной точки как непрозрачную. То есть клиенты не должны пытаться проанализировать содержимое строки для получения сведений об устройстве. Причина заключается в том, что формат строки не определен и может измениться с одной реализации системного модуля API MMDevice на следующую.
Время существования строки идентификатора конечной точки привязано к установке устройства. Строка идентификатора конечной точки устройства изменяется, если пользователь обновляет драйвер устройства или если пользователь удаляет устройство и снова устанавливает его. Однако строка идентификатора конечной точки остается неизменной во время перезагрузки системы, а строка идентификатора конечной точки USB-звукового устройства остается неизменной, если пользователь отключает устройство и подключает его обратно.
См. также