Share via


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:

Wenn die Anwendung die IAudioSessionControl2-Schnittstelle instance freigeben möchte, muss die Anwendung die Release-Methode der Schnittstelle aus demselben Thread aufrufen wie der Aufruf von IAudioClient::GetService, der das Objekt erstellt hat.

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

Weitere Informationen

Kernaudioschnittstellen

IAudioSessionControl

Verwenden eines Kommunikationsgeräts