IAudioSessionControl2-Schnittstelle (audiopolicy.h)
Die IAudioSessionControl2-Schnittstelle kann von einem Client verwendet werden, um Informationen zur Audiositzung abzurufen.
Um einen Verweis auf die IAudioSessionControl2-Schnittstelle abzurufen, muss die Anwendung IAudioSessionControl::QueryInterface aufrufen, um den Schnittstellenzeiger von der IAudioSessionControl-Schnittstelle des Streamobjekts anzufordern. Es gibt zwei Möglichkeiten, wie eine Anwendung einen Zeiger auf die IAudioSessionControl-Schnittstelle abrufen kann:
- Durch Aufrufen von IAudioClient::GetService auf dem Audioclient nach dem Öffnen eines Streams auf dem Gerät. Der Audioclient öffnet einen Stream zum Rendern oder Aufzeichnen und ordnet ihn einer Audiositzung zu, indem er IAudioClient::Initialize aufruft.
- Durch Aufrufen von IAudioSessionManager::GetAudioSessionControl für eine vorhandene Audiositzung, ohne den Stream zu öffnen.
Der Anwendungsthread, der diese Schnittstelle verwendet, muss für COM initialisiert werden. Weitere Informationen zur COM-Initialisierung finden Sie in der Beschreibung der CoInitializeEx-Funktion in der Windows SDK-Dokumentation.
Vererbung
Die IAudioSessionControl2-Schnittstelle erbt von IAudioSessionControl. IAudioSessionControl2 verfügt auch über folgende Membertypen:
Methoden
Die IAudioSessionControl2-Schnittstelle verfügt über diese Methoden.
IAudioSessionControl2::GetProcessId Die GetProcessId-Methode ruft den Prozessbezeichner der Audiositzung ab. |
IAudioSessionControl2::GetSessionIdentifier Die GetSessionIdentifier-Methode ruft den Audiositzungsbezeichner ab. |
IAudioSessionControl2::GetSessionInstanceIdentifier Die GetSessionInstanceIdentifier-Methode ruft den Bezeichner der Audiositzung instance ab. |
IAudioSessionControl2::IsSystemSoundsSession Die IsSystemSoundsSession-Methode gibt an, ob es sich bei der Sitzung um eine Systemsoundsitzung handelt. |
IAudioSessionControl2::SetDuckingPreference Die SetDuckingPreference-Methode aktiviert oder deaktiviert die standardmäßige Streamdämpfungserfahrung (auto-ducking), die vom System bereitgestellt wird. |
Hinweise
Diese Schnittstelle unterstützt benutzerdefinierte Implementierungen für stream Dämpfung oder Ducking, ein neues Feature in Windows 7. Eine Anwendung, die einen Mediendatenstrom wiedergibt, kann dazu führen, dass er sich anders verhält, wenn ein neuer Kommunikationsdatenstrom auf dem Standardkommunikationsgerät geöffnet wird. Beispielsweise kann der ursprüngliche Mediendatenstrom angehalten werden, während der neue Kommunikationsdatenstrom geöffnet ist. Weitere Informationen zu diesem Feature finden Sie unter Standard-Ducking-Erfahrung.
Eine Anwendung kann diese Schnittstelle verwenden, um die folgenden Aufgaben auszuführen:
- Geben Sie an, dass die standardmäßige Streamdämpfungsoberfläche, die vom System bereitgestellt wird, deaktiviert werden soll.
- Rufen Sie den Audiositzungsbezeichner ab, der dem Stream zugeordnet ist. Der Bezeichner ist während der Benachrichtigungsregistrierung erforderlich. Die Anwendung kann sich registrieren, um Ducking-Benachrichtigungen vom System zu erhalten.
- Überprüfen Sie, ob der der Audiositzung zugeordnete Stream ein Systemsound ist.
Beispiele
Der folgende Beispielcode zeigt, wie Sie einen Verweis auf die IAudioSessionControl2-Schnittstelle abrufen und deren Methoden aufrufen, um zu bestimmen, ob der der Audiositzung zugeordnete Stream ein Systemsound ist.
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;
}
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 7 [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 R2 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | audiopolicy.h |