Строки идентификатора конечной точки
В Windows Vista система создает строки идентификатора конечной точки для идентификации устройств звуковых конечных точек, в системе. Строка идентификатора конечной точки — это широкая строка символов, завершающаяся нулевым символом. Строка идентификатора конечной точки для конкретного устройства аудио конечной точки однозначно идентифицирует устройство среди всех устройств аудио конечной точки в системе.
Если система содержит два или более идентичных устройств аудиоадаптера, соответствующие устройства аудиоконечной точки будут иметь одинаковые понятные имена, но каждое устройство конечной точки будет иметь уникальную строку идентификатора конечной точки. Дополнительные сведения о получении понятного имени устройства конечной точки см. в разделе свойства устройства.
После получения экземпляра интерфейса 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-звукового устройства остается неизменной, если пользователь отключает устройство и подключает его обратно.
Связанные разделы