Compartir a través de


Función ActivateAudioInterfaceAsync (mmdeviceapi.h)

Permite que las aplicaciones de la Tienda Windows accedan a interfaces del modelo de objetos componentes (COM) preexistentes en la familia de WASAPI.

Sintaxis

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

Parámetros

[in] deviceInterfacePath

Un identificador de interfaz de dispositivo para un dispositivo de audio. Normalmente, esto se recupera de un objeto DeviceInformation o uno de los métodos de la clase MediaDevice.

Los GUID DEVINTERFACE_AUDIO_CAPTURE y DEVINTERFACE_AUDIO_RENDER representan la captura de audio predeterminada y el dispositivo de representación, respectivamente. Llame a stringFromIID para convertir cualquiera de estos GUID en un LPCWSTR que se usará para este argumento.

Especifique AUDIOCLIENT_ACTIVATION_TYPE_PROCESS_LOOPBACK para activar la interfaz de audio para la captura de bucle invertido de proceso. Para obtener código de ejemplo que muestra el escenario de captura de bucle invertido de proceso, consulte el ejemplo de captura de la API de bucle invertido de aplicaciónde .

[in] riid

IiD de una interfaz COM en la familia de WASAPI, como IAudioClient.

[in] activationParams

Parámetros de activación específicos de la interfaz. Para obtener más información, vea el parámetro pActivationParams en IMMDevice::Activate.

A partir de la compilación 20438 de Windows 10, puedes especificar AUDIOCLIENT_ACTIVATION_PARAMS para activar la interfaz para incluir o excluir secuencias de audio asociadas a un identificador de proceso especificado.

[in] completionHandler

Interfaz implementada por el autor de la llamada a la que llama Windows cuando el resultado del procedimiento de activación está disponible.

activationOperation

Devuelve una interfaz IActivateAudioInterfaceAsyncOperation que representa el funcionamiento asincrónico de activar la interfaz WASAPI solicitada.

Valor devuelto

La función devuelve un HRESULT. Entre los valores posibles se incluyen, entre otros, los de la tabla siguiente.

Código devuelto Descripción
S_OK
El objeto subyacente y la operación asincrónica se crearon correctamente.
E_ILLEGAL_METHOD_CALL
En las versiones de Windows anteriores a Windows 10, este error puede dar lugar a este error si se llama a la función desde un apartamento COM incorrecto o si el IActivateAudioInterfaceCompletionHandler no se implementa en un objeto ágil (agregando un serializador de subproceso libre).

Observaciones

Esta función permite que las aplicaciones de la Tienda Windows activen determinadas interfaces WASAPI COM después de usar las API de Windows Runtime en la Windows.Devices y windows.Media.Devices espacios de nombres para seleccionar un dispositivo de audio.

Para muchas implementaciones, una aplicación debe llamar a esta función desde el subproceso principal de la interfaz de usuario para activar una interfaz COM en la familia wasAPI para que el sistema pueda mostrar un cuadro de diálogo al usuario. La aplicación pasa una interfaz COM de devolución de llamada IActivateAudioInterfaceCompletionHandler mediante completionHandler. Windows llama a un método en la interfaz IActivateAudioInterfaceCompletionHandler de la aplicación desde un subproceso de trabajo en com Multi-threaded Apartment (MTA) cuando los resultados de la activación están disponibles. A continuación, la aplicación puede llamar a un método en la interfaz IActivateAudioInterfaceAsyncOperation para recuperar el código de resultado y la interfaz WASAPI solicitada. Hay algunas activaciones que son explícitamente seguras y, por lo tanto, no requieren que se llame a esta función desde el subproceso principal de la interfaz de usuario. Estas activaciones explícitamente seguras incluyen:

  • Llamar a activateAudioInterfaceAsync con un deviceInterfacePath que especifica un dispositivo de representación de audio y un riid que especifica la interfaz IAudioClient.
  • Llamar a activateAudioInterfaceAsync con un deviceInterfacePath que especifica un dispositivo de representación de audio y un riid que especifica la interfaz IAudioEndpointVolume.
  • Llamar a ActivateAudioInterfaceAsync desde un servicio de sesión 0. Para obtener más información, vea Services.
Windows contiene una referencia a la interfaz IActivateAudioInterfaceCompletionHandler de la aplicación hasta que se complete la operación y la aplicación libera la interfaz IActivateAudioInterfaceAsyncOperation.
importantes  

Las aplicaciones no deben liberar el objeto que implementa el IActivateAudioInterfaceCompletionHandler hasta que se haya ejecutado la devolución de llamada del controlador de finalización.

 
En función de la interfaz
WASAPI , esta función puede mostrar una solicitud de consentimiento la primera vez que se llama. Por ejemplo, cuando la aplicación llama a esta función para activar IAudioClient para acceder a un micrófono, el propósito de la solicitud de consentimiento es obtener el permiso del usuario para que la aplicación acceda al micrófono. Para obtener más información sobre el mensaje de consentimiento, consulte Directrices para dispositivos que acceden a datos personales.

se debe llamar a ActivateAudioInterfaceAsync en el subproceso principal de la interfaz de usuario para que se pueda mostrar el mensaje de consentimiento. Si no se puede mostrar el mensaje de consentimiento, el usuario no puede conceder acceso al dispositivo a la aplicación.

En versiones de Windows anteriores a Windows 10, se debe llamar a ActivateAudioInterfaceAsync en un subproceso en un com Single-Threaded Apartment (STA), al abrir un dispositivo para la captura de audio. El completionHandler que se pasa a ActivateAudioInterfaceAsync debe implementar IAgileObject para asegurarse de que no hay interbloqueo cuando se llama al completionHandler desde el MTA. De lo contrario, se producirá una E_ILLEGAL_METHOD_CALL.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 8 [aplicaciones de escritorio | Aplicaciones para UWP]
servidor mínimo admitido Windows Server 2012 [aplicaciones de escritorio | Aplicaciones para UWP]
de la plataforma de destino de Windows
encabezado de mmdeviceapi.h (include Mmdevapi.idl)
biblioteca de Mmdevapi.lib
DLL de Mmdevapi.dll
irQL No

Consulte también

funciones de audio principales de

IActivateAudioInterfaceAsyncOperation

IActivateAudioInterfaceCompletionHandler