Partager via


Interface IAudioSessionControl2 (audiopolicy.h)

L’interface IAudioSessionControl2 peut être utilisée par un client pour obtenir des informations sur la session audio.

Pour obtenir une référence à l’interface IAudioSessionControl2 , l’application doit appeler IAudioSessionControl ::QueryInterface pour demander le pointeur d’interface à partir de l’interface IAudioSessionControl de l’objet stream. Il existe deux façons pour une application d’obtenir un pointeur vers l’interface IAudioSessionControl :

Lorsque l’application souhaite libérer l’interface IAudioSessionControl2 instance, l’application doit appeler la méthode Release de l’interface à partir du même thread que l’appel à IAudioClient ::GetService qui a créé l’objet.

Le thread d’application qui utilise cette interface doit être initialisé pour COM. Pour plus d’informations sur l’initialisation COM, consultez la description de la fonction CoInitializeEx dans la documentation du Kit de développement logiciel (SDK) Windows.

Héritage

L’interface IAudioSessionControl2 hérite de IAudioSessionControl. IAudioSessionControl2 possède également les types de membres suivants :

Méthodes

L’interface IAudioSessionControl2 possède ces méthodes.

 
IAudioSessionControl2 ::GetProcessId

La méthode GetProcessId récupère l’identificateur de processus de la session audio.
IAudioSessionControl2 ::GetSessionIdentifier

La méthode GetSessionIdentifier récupère l’identificateur de session audio.
IAudioSessionControl2 ::GetSessionInstanceIdentifier

La méthode GetSessionInstanceIdentifier récupère l’identificateur de la session audio instance.
IAudioSessionControl2 ::IsSystemSoundsSession

La méthode IsSystemSoundsSession indique si la session est une session de son système.
IAudioSessionControl2 ::SetDuckingPreference

La méthode SetDuckingPreference active ou désactive l’expérience d’atténuation de flux par défaut (canardage automatique) fournie par le système.

Remarques

Cette interface prend en charge les implémentations personnalisées pour l’atténuation ou lecanardage de flux, une nouvelle fonctionnalité de Windows 7. Une application qui lit un flux multimédia peut faire en sorte qu’elle se comporte différemment lorsqu’un nouveau flux de communication est ouvert sur l’appareil de communication par défaut. Par exemple, le flux multimédia d’origine peut être suspendu pendant que le nouveau flux de communication est ouvert. Pour plus d’informations sur cette fonctionnalité, consultez Expérience de canardage par défaut.

Une application peut utiliser cette interface pour effectuer les tâches suivantes :

  • Spécifiez qu’il souhaite refuser l’expérience d’atténuation de flux par défaut fournie par le système.
  • Obtenez l’identificateur de session audio associé au flux. L’identificateur est requis lors de l’inscription de la notification. L’application peut s’inscrire elle-même pour recevoir des notifications de canardage du système.
  • Vérifiez si le flux associé à la session audio est un son système.

Exemples

L’exemple de code suivant montre comment obtenir une référence à l’interface IAudioSessionControl2 et appeler ses méthodes pour déterminer si le flux associé à la session audio est un son système.

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;
}

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 7 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 R2 [applications de bureau uniquement]
Plateforme cible Windows
En-tête audiopolicy.h

Voir aussi

Interfaces audio principales

IAudioSessionControl

Utilisation d’un appareil de communication