Partager via


IMMDevice ::Activate, méthode (mmdeviceapi.h)

La méthode Activate crée un objet COM avec l’interface spécifiée.

Syntaxe

HRESULT Activate(
  [in]  REFIID      iid,
  [in]  DWORD       dwClsCtx,
  [in]  PROPVARIANT *pActivationParams,
  [out] void        **ppInterface
);

Paramètres

[in] iid

Identificateur de l’interface. Ce paramètre est une référence à un GUID qui identifie l’interface que l’appelant demande être activée. L’appelant utilise cette interface pour communiquer avec l’objet COM. Définissez ce paramètre sur l’un des identificateurs d’interface suivants :

IID_IAudioClient

IID_IAudioEndpointVolume

IID_IAudioMeterInformation

IID_IAudioSessionManager

IID_IAudioSessionManager2

IID_IBaseFilter

IID_IDeviceTopology

IID_IDirectSound

IID_IDirectSound8

IID_IDirectSoundCapture

IID_IDirectSoundCapture8

IID_IMFTrustedOutput

IID_ISpatialAudioClient

IID_ISpatialAudioMetadataClient

Pour plus d’informations, consultez Remarques.

[in] dwClsCtx

Contexte d’exécution dans lequel le code qui gère l’objet nouvellement créé s’exécute. L’appelant peut restreindre le contexte en définissant ce paramètre sur le ou d’une ou plusieurs valeurs d’énumération CLSCTX. Le client peut également éviter d’imposer des restrictions de contexte en spécifiant CLSCTX_ALL. Pour plus d’informations sur CLSCTX, consultez la documentation du Kit de développement logiciel (SDK) Windows.

[in] pActivationParams

Défini sur NULL pour activer unIAudioEndpointVolume , IAudioMeterInformation, IAudioSessionManagerou interface IDeviceTopology sur un appareil de point de terminaison audio. À compter de Windows 10 Build 20348, les appelants activant un IAudioClient peuvent définir pActivationParams sur un pointeur vers un AUDIOCLIENT_ACTIVATION_PARAMS pour configurer un client audio en mode bouclage avec un filtre de processus.

Lors de l’activation d’un IBaseFilter , IDirectSound, IDirectSound8, IDirectSoundCaptureou interface IDirectSoundCapture8 sur l’appareil, l’appelant peut spécifier un pointeur vers une structure PROPVARIANT qui contient des informations d’initialisation de flux. Pour plus d’informations, consultez Remarques.

[out] ppInterface

Pointeur vers une variable de pointeur dans laquelle la méthode écrit l’adresse de l’interface spécifiée par le paramètre iid. Grâce à cette méthode, l’appelant obtient une référence comptée à l’interface. L’appelant est chargé de libérer l’interface, lorsqu’elle n’est plus nécessaire, en appelant la méthode Release de l’interface. Si l’appel Activer échoue, *ppInterface est NULL.

Valeur de retour

Si la méthode réussit, elle retourne S_OK. En cas d’échec, les codes de retour possibles incluent, mais ne sont pas limités, les valeurs indiquées dans le tableau suivant.

Retourner le code Description
E_NOINTERFACE
L’objet ne prend pas en charge le type d’interface demandé.
E_POINTER
Le paramètre ppInterface est NULL.
E_INVALIDARG
Le paramètre pActivationParams doit être NULL pour l’interface spécifiée ; ou pActivationParams pointe vers des données non valides.
E_OUTOFMEMORY
Mémoire insuffisante.
AUDCLNT_E_DEVICE_INVALIDATED
L’utilisateur a supprimé l’appareil de point de terminaison audio ou l’appareil adaptateur auquel se connecte l’appareil de point de terminaison.

Remarques

Cette méthode crée un objet COM avec une interface spécifiée par le paramètre iid. La méthode est similaire à la fonction CoCreateInstance de Windows , sauf que l’appelant ne fournit pas de CLSID en tant que paramètre. Pour plus d’informations sur CoCreateInstance, consultez la documentation du Kit de développement logiciel (SDK) Windows.

Un client peut appeler la méthode Activate de l’interface IMMDevice pour un appareil de point de terminaison audio particulier afin d’obtenir une référence comptée à une interface sur cet appareil. La méthode peut activer les interfaces suivantes :

Pour obtenir l’ID d’interface d’une interface, utilisez l’opérateur __uuidof. Par exemple, l’ID d’interface de IAudioCaptureClient est défini comme suit :

const IID IID_IAudioClient  __uuidof(IAudioCaptureClient)

Pour plus d’informations sur l’opérateur __uuidof, consultez la documentation du Kit de développement logiciel (SDK) Windows. Pour plus d’informations sur IBaseFilter, IDirectSound, IDirectSound8, IDirectSoundCapture, IDirectSoundCapture8et IMFTrustedOutput consultez la documentation du KIT de développement logiciel (SDK) Windows.

Le paramètre pActivationParams doit être NULL pour un appel Activate pour créer un appel IAudioEndpointVolume, IAudioMeterInformation, IAudioSessionManagerou interface IDeviceTopology pour un appareil de point de terminaison audio. À compter de Windows 10 Build 20348, les appelants activant un IAudioClient peuvent définir pActivationParams sur un pointeur vers un AUDIOCLIENT_ACTIVATION_PARAMS pour configurer un client audio en mode bouclage avec un filtre de processus.

Pour un appel Activate pour créer un IBaseFilter, IDirectSound, IDirectSound8, IDirectSoundCaptureou interface IDirectSoundCapture8, l’appelant peut, en tant qu’option, spécifier une valeur de NULL nonpour pActivationParams. Dans ce cas, pActivationParams pointe vers une structure PROPVARIANT qui contient des informations d’initialisation de flux. Définissez le membre vt de la structure sur VT_BLOB. Définissez le membre blob.pBlobData pour qu’il pointe vers une structure DIRECTX_AUDIO_ACTIVATION_PARAMS qui contient un GUID de session audio et des indicateurs d’initialisation de flux. Définissez le membre blob.cbSize sur taille de(DIRECTX_AUDIO_ACTIVATION_PARAMS). Pour obtenir un exemple de code, consultez Rôles d’appareil pour les applications DirectShow. Pour plus d’informations sur PROPVARIANT, consultez la documentation du Kit de développement logiciel (SDK) Windows.

Un IBaseFilter, IDirectSound, IDirectSound8, IDirectSoundCaptureou instance d’interface IDirectSoundCapture8 créée par la méthode Activate encapsule un flux sur l’appareil de point de terminaison audio. Pendant l’appel Activate, le module système DirectSound crée le flux en appelant la méthode IAudioClient ::Initialize. Si pActivationParams n’est pasNULL, DirectSound fournit le GUID de session audio et les indicateurs d’initialisation de flux à partir de la structure DIRECTX_AUDIO_ACTIVATION_PARAMS en tant que paramètres d’entrée à l'Initialiser appel. Si pActivationParams est NULL, DirectSound définit les paramètres Initialiser méthode AudioSessionGuid et Les paramètres StreamFlags sur leurs valeurs par défaut respectives, NULL et 0. Ces valeurs indiquent à la méthode d’affecter le flux à la session spécifique au processus identifiée par la valeur GUID de session GUID_NULL.

Activer peut activer une interface IDirectSound ou interface IDirectSound8 uniquement sur un appareil de point de terminaison de rendu. Il peut activer une interface IDirectSoundCapture ou interface IDirectSoundCapture8 uniquement sur un appareil de point de terminaison de capture. Un appel Activer pour activer un IDirectSound ou interface IDirectSoundCapture8 sur un appareil de capture ou un IDirectSoundCapture ou interface IDirectSoundCapture8 sur un appareil de rendu échoue et retourne le code d’erreur E_NOINTERFACE.

Dans Windows 7, un client peut appeler IMMDevice ::Activate et spécifier, IID_IMFTrustedOutput, pour créer un objet OTA (Output Trust Authorities) et récupérer un pointeur vers l’interface IMFTrustedOutput de l’objet. Les otas peuvent fonctionner à l’intérieur ou à l’extérieur du chemin d’accès multimédia protégé de Media Foundation (PMP) et envoyer du contenu en dehors du pipeline Media Foundation. Si l’appelant est en dehors de PMP, l’OTA peut ne pas fonctionner dans le PMP et les paramètres de protection sont moins robustes. Pour plus d’informations sur l’utilisation d’objets protégés pour l’audio et l’exemple de code, consultez PUMA (Protected User Mode Audio).

Pour obtenir des informations générales sur les objets protégés et IMFTrustedOutput, consultez la documentation « Protected Media Path » dans la documentation de Media Foundation.

Remarque Lors de l’utilisation des interfaces ISpatialAudioClient sur un titre XDK (Xbox One Development Kit), vous devez d’abord appeler EnableSpatialAudio avant d’appeler IMMDeviceEnumerator ::EnumAudioEndpoints ou IMMDeviceEnumerator ::GetDefaultAudioEndpoint. Si vous ne le faites pas, une erreur de E_NOINTERFACE est retournée par l’appel à Activate. enableSpatialAudio est disponible uniquement pour les titres XDK et n’a pas besoin d’être appelé pour les applications de plateforme Windows universelle s’exécutant sur Xbox One, ni pour les appareils non Xbox One.
 
Pour obtenir des exemples de code qui appellent la méthode Activate , consultez les rubriques suivantes :

Exigences

Exigence Valeur
client minimum pris en charge Windows Vista [applications de bureau uniquement]
serveur minimum pris en charge Windows Server 2008 [applications de bureau uniquement]
plateforme cible Windows
d’en-tête mmdeviceapi.h

Voir aussi

interface IAudioClient

interface IAudioEndpointVolume

interface IAudioMeterInformation

interface IAudioSessionManager

interface IDeviceTopology

interface IMMDevice