Partager via


ActivateAudioInterfaceAsync, fonction (mmdeviceapi.h)

Permet aux applications du Windows Store d’accéder aux interfaces COM (Component Object Model) préexistantes dans la famille WASAPI.

Syntaxe

HRESULT ActivateAudioInterfaceAsync(
  [in] LPCWSTR                                  deviceInterfacePath,
  [in] REFIID                                   riid,
  [in] PROPVARIANT                              *activationParams,
  [in] IActivateAudioInterfaceCompletionHandler *completionHandler,
       IActivateAudioInterfaceAsyncOperation    **activationOperation
);

Paramètres

[in] deviceInterfacePath

ID d’interface d’appareil pour un appareil audio. Cela est normalement récupéré à partir d’un objet DeviceInformation ou de l’une des méthodes de la classe MediaDevice.

Les GUID DEVINTERFACE_AUDIO_CAPTURE et DEVINTERFACE_AUDIO_RENDER représentent respectivement la capture audio par défaut et l’appareil de rendu. Appelez StringFromIID pour convertir l’un de ces GUID en un LPCWSTR à utiliser pour cet argument.

Spécifiez AUDIOCLIENT_ACTIVATION_TYPE_PROCESS_LOOPBACK pour activer l’interface audio pour la capture de bouclage de processus. Pour obtenir un exemple de code qui illustre le scénario de capture de bouclage de processus, consultez l’exemple de capture d’API de boucle d’application .

[in] riid

IID d’une interface COM dans la famille WASAPI, par exemple IAudioClient.

[in] activationParams

Paramètres d’activation spécifiques à l’interface. Pour plus d’informations, consultez le paramètre pActivationParams dans IMMDevice ::Activate.

À compter de Windows 10 Build 20438, vous pouvez spécifier AUDIOCLIENT_ACTIVATION_PARAMS pour activer l’interface pour inclure ou exclure des flux audio associés à un ID de processus spécifié.

[in] completionHandler

Interface implémentée par l’appelant appelé par Windows lorsque le résultat de la procédure d’activation est disponible.

activationOperation

Renvoie une interface IActivateAudioInterfaceAsyncOperation qui représente l’opération asynchrone d’activation de l’interface WASAPI demandée.

Valeur de retour

La fonction retourne une HRESULT. Les valeurs possibles incluent, mais ne sont pas limitées à celles du tableau suivant.

Retourner le code Description
S_OK
L’objet sous-jacent et l’opération asynchrone ont été créés avec succès.
E_ILLEGAL_METHOD_CALL
Sur les versions de Windows antérieures à Windows 10, cette erreur peut se produire si la fonction est appelée à partir d’un appartement COM incorrect ou si le passé IActivateAudioInterfaceCompletionHandler n’est pas implémenté sur un objet agile (agrégation d’un marshaleur à threads libres).

Remarques

Cette fonction permet aux applications du Windows Store d’activer certaines interfaces WASAPI COM après avoir utilisé des API Windows Runtime dans les Windows.Devices et espaces de noms Windows.Media.Devices pour sélectionner un appareil audio.

Pour de nombreuses implémentations, une application doit appeler cette fonction à partir du thread d’interface utilisateur principal pour activer une interface COM dans la famille WASAPI afin que le système puisse afficher une boîte de dialogue à l’utilisateur. L’application transmet une interface COM de rappel COM IActivateAudioInterfaceCompletionHandler via completionHandler. Windows appelle une méthode dans l’interface IActivateAudioInterfaceCompletionHandler de l’application à partir d’un thread de travail dans l’assistant Multithread Apartment (MTA) COM lorsque les résultats de l’activation sont disponibles. L’application peut ensuite appeler une méthode dans l’interface IActivateAudioInterfaceAsyncOperation pour récupérer le code de résultat et l’interface WASAPI demandée. Certaines activations sont explicitement sécurisées et ne nécessitent donc pas que cette fonction soit appelée à partir du thread d’interface utilisateur principal. Ces activations explicitement sécurisées sont les suivantes :

  • Appel de activateAudioInterfaceAsync avec un deviceInterfacePath qui spécifie un appareil de rendu audio et un riid qui spécifie l’interface IAudioClient .
  • Appel de activateAudioInterfaceAsync avec un deviceInterfacePath qui spécifie un appareil de rendu audio et un riid qui spécifie l’interface IAudioEndpointVolume.
  • Appel de ActivateAudioInterfaceAsync à partir d’un service de session 0. Pour plus d’informations, consultez Services.
Windows contient une référence à l’interface IActivateAudioInterfaceCompletionHandler jusqu’à ce que l’opération soit terminée et que l’application libère l’interface IActivateAudioInterfaceAsyncOperation.
important  

Les applications ne doivent pas libérer l’objet implémentant l'IActivateAudioInterfaceCompletionHandler tant que le rappel du gestionnaire d’achèvement n’a pas été exécuté.

 
Selon la 'interface WASAPI activée, cette fonction peut afficher une invite de consentement la première fois qu’elle est appelée. Par exemple, lorsque l’application appelle cette fonction pour activer IAudioClient pour accéder à un microphone, l’objectif de l’invite de consentement consiste à obtenir l’autorisation de l’utilisateur pour que l’application accède au microphone. Pour plus d’informations sur l’invite de consentement, consultez Recommandations pour les appareils qui accèdent aux données personnelles.

activateAudioInterfaceAsync doit être appelée sur le thread d’interface utilisateur principal afin que l’invite de consentement puisse être affichée. Si l’invite de consentement ne peut pas être affichée, l’utilisateur ne peut pas accorder l’accès de l’appareil à l’application.

Sur les versions de Windows antérieures à Windows 10, ActivateAudioInterfaceAsync doivent être appelées sur un thread dans un COM Single-Threaded Apartment (STA), lors de l’ouverture d’un appareil pour la capture audio. Le completionHandler passé dans ActivateAudioInterfaceAsync doit implémenter IAgileObject pour s’assurer qu’il n’y a pas d’interblocage lorsque le completionHandler est appelé à partir du MTA. Sinon, une E_ILLEGAL_METHOD_CALL se produit.

Exigences

Exigence Valeur
client minimum pris en charge Windows 8 [applications de bureau | Applications UWP]
serveur minimum pris en charge Windows Server 2012 [applications de bureau | Applications UWP]
plateforme cible Windows
d’en-tête mmdeviceapi.h (include Mmdevapi.idl)
bibliothèque Mmdevapi.lib
DLL Mmdevapi.dll
IRQL Non

Voir aussi

fonctions audio principales

IActivateAudioInterfaceAsyncOperation

IActivateAudioInterfaceCompletionHandler