Интерфейс IAudioSessionControl2 (audiopolicy.h)
Интерфейс IAudioSessionControl2 может использоваться клиентом для получения сведений о звуковом сеансе.
Чтобы получить ссылку на интерфейс IAudioSessionControl2 , приложение должно вызвать IAudioSessionControl::QueryInterface , чтобы запросить указатель интерфейса из интерфейса IAudioSessionControl объекта потока. Приложение может получить указатель на интерфейс IAudioSessionControl двумя способами .
- Путем вызова IAudioClient::GetService в звуковом клиенте после открытия потока на устройстве. Звуковой клиент открывает поток для отрисовки или записи и связывает его со звуковым сеансом, вызывая IAudioClient::Initialize.
- Путем вызова IAudioSessionManager::GetAudioSessionControl для существующего звукового сеанса без открытия потока.
Поток приложения, использующий этот интерфейс, должен быть инициализирован для 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 |