Función ActivateAudioInterfaceAsync (mmdeviceapi.h)
Permite que las aplicaciones de la Tienda Windows accedan a interfaces preexistentes del Modelo de objetos componentes (COM) en la familia 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 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 y el dispositivo de representación predeterminados, 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 ejemplo de captura de Application Loopback API.
[in] riid
IID de una interfaz COM en la familia 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 TBD, puede 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 la operación asincrónica de activar la interfaz WASAPI solicitada.
Valor devuelto
La función devuelve un HRESULT. Entre los valores posibles se incluyen los que se indican en la tabla siguiente, entre otros.
Código devuelto | Descripción |
---|---|
|
El objeto subyacente y la operación asincrónica se crearon correctamente. |
|
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 pasado no se implementa en un objeto ágil (agregando un serializador sin subprocesos). |
Comentarios
Esta función permite que las aplicaciones de la Tienda Windows activen determinadas interfaces COM wasAPI después de usar Windows Runtime API en los espacios de nombres Windows.Devices y Windows.Media.Devices 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 COM de IActivateAudioInterfaceCompletionHandler a través de completionHandler. Windows llama a un método en la interfaz IActivateAudioInterfaceCompletionHandler de la aplicación desde un subproceso de trabajo en el Apartamento multiproceso COM (MTA) cuando los resultados de 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 seguras explícitamente 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, consulte Servicios.
Las aplicaciones no deben liberar el objeto que implementa IActivateAudioInterfaceCompletionHandler hasta que se haya ejecutado la devolución de llamada del controlador de finalización.
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 las 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 ningún interbloqueo cuando se llama a completionHandler desde el MTA. De lo contrario, se producirá un E_ILLEGAL_METHOD_CALL .
Requisitos
Cliente mínimo compatible | Windows 8 [aplicaciones de escritorio | Aplicaciones para UWP] |
Servidor mínimo compatible | Windows Server 2012 [aplicaciones de escritorio | Aplicaciones para UWP] |
Plataforma de destino | Windows |
Encabezado | mmdeviceapi.h (include Mmdevapi.idl) |
Library | Mmdevapi.lib |
Archivo DLL | Mmdevapi.dll |
IRQL | No |
Consulte también
Funciones principales de audio