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 :
- En appelant IAudioClient ::GetService sur le client audio après avoir ouvert un flux sur l’appareil. Le client audio ouvre un flux pour le rendu ou la capture et l’associe à une session audio en appelant IAudioClient ::Initialize.
- En appelant IAudioSessionManager ::GetAudioSessionControl pour une session audio existante sans ouvrir le flux.
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 |