Поделиться через


Интерфейс IAudioSessionControl2 (audiopolicy.h)

Интерфейс IAudioSessionControl2 может использоваться клиентом для получения сведений о звуковом сеансе.

Чтобы получить ссылку на интерфейс IAudioSessionControl2 , приложение должно вызвать IAudioSessionControl::QueryInterface , чтобы запросить указатель интерфейса из интерфейса IAudioSessionControl объекта потока. Приложение может получить указатель на интерфейс IAudioSessionControl двумя способами .

  • Путем вызова IAudioClient::GetService в звуковом клиенте после открытия потока на устройстве. Звуковой клиент открывает поток для отрисовки или записи и связывает его со звуковым сеансом, вызывая IAudioClient::Initialize.
  • Путем вызова IAudioSessionManager::GetAudioSessionControl для существующего звукового сеанса без открытия потока.
Когда приложение хочет освободить экземпляр интерфейса IAudioSessionControl2 , приложение должно вызвать метод Release интерфейса из того же потока, что и вызов IAudioClient::GetService , создавшего объект .

Поток приложения, использующий этот интерфейс, должен быть инициализирован для COM. Дополнительные сведения об инициализации COM см. в описании функции CoInitializeEx в документации по Windows SDK.

Наследование

Интерфейс IAudioSessionControl2 наследуется от IAudioSessionControl. IAudioSessionControl2 также содержит следующие типы элементов:

Методы

Интерфейс IAudioSessionControl2 содержит следующие методы.

 
IAudioSessionControl2::GetProcessId

Метод GetProcessId извлекает идентификатор процесса звукового сеанса.
IAudioSessionControl2::GetSessionIdentifier

Метод GetSessionIdentifier извлекает идентификатор звукового сеанса.
IAudioSessionControl2::GetSessionInstanceIdentifier

Метод GetSessionInstanceIdentifier извлекает идентификатор экземпляра звукового сеанса.
IAudioSessionControl2::IsSystemSoundsSession

Метод IsSystemSoundsSession указывает, является ли сеанс системным звуковым сеансом.
IAudioSessionControl2::SetDuckingPreference

Метод SetDuckingPreference включает или отключает затухание потока по умолчанию (автоматическое устаревание), предоставляемое системой.

Комментарии

Этот интерфейс поддерживает пользовательские реализации для затухания потока или утихания , новой функции в Windows 7. Приложение, воспроизводищее поток мультимедиа, может по-разному вести себя при открытии нового потока связи на устройстве связи по умолчанию. Например, исходный поток мультимедиа можно приостановить, пока новый поток связи открыт. Дополнительные сведения об этой функции см. в разделе Стандартный интерфейс ducking.

Приложение может использовать этот интерфейс для выполнения следующих задач:

  • Укажите, что он хочет отказаться от затухания потока по умолчанию, предоставляемого системой.
  • Получите идентификатор звукового сеанса, связанный с потоком. Идентификатор требуется во время регистрации уведомления. Приложение может зарегистрировать себя для получения утихих уведомлений от системы.
  • Проверьте, является ли поток, связанный с аудиосеансом, системным звуком.

Примеры

В следующем примере кода показано, как получить ссылку на интерфейс IAudioSessionControl2 и вызвать его методы, чтобы определить, является ли поток, связанный с аудиосеансом, системным звуком.

HRESULT SetDuckingForSystemSounds()
{
 
    HRESULT hr = S_OK;
    
    IMMDevice* pDevice = NULL;
    IMMDeviceEnumerator* pEnumerator = NULL;
    IAudioSessionControl* pSessionControl = NULL;
    IAudioSessionControl2* pSessionControl2 = NULL;
    IAudioSessionManager* pSessionManager = NULL;

    CHECK_HR( hr = CoInitialize(NULL));

    // Create the device enumerator.
    CHECK_HR( hr = CoCreateInstance(
        __uuidof(MMDeviceEnumerator), 
        NULL, CLSCTX_ALL, 
        __uuidof(IMMDeviceEnumerator), 
        (void**)&pEnumerator));

    // Get the default audio device.
    CHECK_HR( hr = pEnumerator->GetDefaultAudioEndpoint(
                    eRender, eConsole, &pDevice));

    // Get the audio client.
    CHECK_HR( hr = pDevice->Activate(
        __uuidof(IID_IAudioSessionManager), CLSCTX_ALL,
        NULL, (void**)&pSessionManager));

    // Get a reference to the session manager.
    CHECK_HR( hr = pSessionManager->GetAudioSessionControl (GUID_NULL, FALSE, &pSessionControl));
    
    // Get the extended session control interface pointer.
    CHECK_HR( hr = pSessionControl->QueryInterface(
        __uuidof(IAudioSessionControl2), (void**) &pSessionControl2));

    // Check whether this is a system sound.
    CHECK_HR( hr = pSessionControl2->IsSystemSoundsSession());

    // If it is a system sound, opt out of the default
    // stream attenuation experience.
    CHECK_HR( hr = pSessionControl2->SetDuckingPreference(TRUE));

done:

    // Clean up.
    SAFE_RELEASE(pSessionControl2);
    SAFE_RELEASE(pSessionControl);
    SAFE_RELEASE(pEnumerator);
    SAFE_RELEASE(pDevice);


    return hr;
}

Требования

Требование Значение
Минимальная версия клиента Windows 7 [только классические приложения]
Минимальная версия сервера Windows Server 2008 R2 [только классические приложения]
Целевая платформа Windows
Header audiopolicy.h

См. также раздел

Основные звуковые интерфейсы

IAudioSessionControl

Использование устройства связи