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 |
---|---|
|
L’objet sous-jacent et l’opération asynchrone ont été créés avec succès. |
|
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.
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é.
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 |