Вопрос

Я пытаюсь использовать Windows Audio Session API, чтобы найти аудиосессию по умолчанию в списке текущих аудиосессий.В настоящее время у меня есть ссылка на IAudioSessionControl сеанса по умолчанию конечной точки рендеринга аудио в eConsole роль, а также IAudioSessionEnumerator объект, который перечисляет аудиосеансы этой конечной точки по умолчанию, но мне нужно иметь возможность сравнивать IAudioSessionControl объект, который у меня есть для равенства с IAudioSessionControl объекты, возвращенные IAudioSessionEnumerator::GetSession.

Я надеялся, что смогу проверить на равенство, сравнив IAudioSessionControl указатели на равенство.Это работает, когда я получаю IAudioSessionControl для сеанса по умолчанию несколько раз, используя IAudioClient::GetService.К сожалению, этот указатель, возвращенный IAudioClient::GetService не отображается в перечислении аудиосеансов с помощью IAudioSessionEnumerator.Кроме того, многократное получение аудиосеанса по умолчанию с помощью IAudioSessionManager::GetAudioSessionControl маршрут не дает идентичных результатов IAudioSessionControl указатели даже при использовании одного и того же GUID аудиосеанса (GUID_NULL) и CrossProcessSession ценность.

Как мне проверить равенство аудиосеансов при двух IAudioSessionControl указатели?Возможно ли получить GUID аудиосеанса и идентификатор процесса данного IAudioSessionControl возражать?

Это было полезно?

Решение

Посмотрите на IAudioSessionControl2::Получает идентификатор сеанса API, это то, что аудиоподсистема использует для сохранения сеансовых томов.Если вы хотите различать сеансы во время выполнения (два экземпляра одного и того же приложения, запущенные одновременно), проверьте GetSessionInstanceIdentifier - идентификатор сеанса API.

Другие советы

Единственное, с чем COM может вам здесь помочь, это требование к идентификации объекта.

Вы спрашиваете IUnknown* из обоих объектов и сравните их.Если IUnknown* из этих объектов один и тот же, это один и тот же объект, в противном случае это разные объекты.

Конечно, реализация может нарушать требование идентификации объекта, или эти различные объекты могут каким-то образом отображаться на один и тот же внутренний объект.COM не может помочь вам здесь - вы должны найти информацию, специфичную для реализации этого компонента.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top