Partager via


Fonction ActivateAudioInterfaceAsync (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. Il est normalement récupéré à partir d’un objet DeviceInformation ou d’une des méthodes de la classe MediaDevice .

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

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

[in] riid

IID d’une interface COM dans la famille WASAPI , telle qu’IAudioClient.

[in] activationParams

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

À partir de tbD, vous pouvez spécifier AUDIOCLIENT_ACTIVATION_PARAMS pour activer l’interface afin d’inclure ou d’exclure les 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 retournée

La fonction retourne un HRESULT. Les valeurs possibles sont notamment celles figurant dans le tableau suivant.

Code de retour 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 IActivateAudioInterfaceCompletionHandler passé n’est pas implémenté sur un objet agile (agrégation d’un marshaler à thread libre).

Notes

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

Pour de nombreuses implémentations, une application doit appeler cette fonction à partir du thread d’interface utilisateur main 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 passe une interface COM de rappel IActivateAudioInterfaceCompletionHandler via completionHandler. Windows appelle une méthode dans l’interface IActivateAudioInterfaceCompletionHandler de l’application à partir d’un thread worker dans l’appartement multithread com (MTA) lorsque les résultats d’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 main. Ces activations explicitement sécurisées sont les suivantes :

  • Appel de ActivateAudioInterfaceAsync avec un deviceInterfacePath qui spécifie un périphérique de rendu audio et un riid qui spécifie l’interface IAudioClient .
  • Appel de ActivateAudioInterfaceAsync avec un deviceInterfacePath qui spécifie un périphérique 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, voir Services.
Windows conserve une référence à l’interface IActivateAudioInterfaceCompletionHandler de l’application 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 IActivateAudioInterfaceCompletionHandler tant que le rappel du gestionnaire d’achèvement n’a pas été exécuté.

 
Selon l’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 est d’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é sur le thread d’interface utilisateur main afin que l’invite de consentement puisse s’afficher. Si l’invite de consentement ne peut pas s’afficher, l’utilisateur ne peut pas accorder à l’appareil l’accès à l’application.

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

Configuration requise

   
Client minimal pris en charge Windows 8 [applications de bureau | Applications UWP]
Serveur minimal pris en charge Windows Server 2012 [applications de bureau | Applications UWP]
Plateforme cible Windows
En-tête mmdeviceapi.h (inclure Mmdevapi.idl)
Bibliothèque Mmdevapi.lib
DLL Mmdevapi.dll
IRQL Non

Voir aussi

Fonctions audio principales

IActivateAudioInterfaceAsyncOperation

IActivateAudioInterfaceCompletionHandler