Método IAudioClient::GetService (audioclient.h)

El método GetService accede a servicios adicionales desde el objeto de cliente de audio.

Sintaxis

HRESULT GetService(
  [in]  REFIID riid,
  [out] void   **ppv
);

Parámetros

[in] riid

Identificador de interfaz del servicio solicitado. El cliente debe establecer este parámetro en uno de los siguientes valores REFIID:

IID_IAudioCaptureClient

IID_IAudioClientDuckingControl

IID_IAudioClock

IID_IAudioRenderClient

IID_IAudioSessionControl

IID_IAudioStreamVolume

IID_IChannelAudioVolume

IID_IMFTrustedOutput

IID_ISimpleAudioVolume

Para obtener más información, vea la sección Comentarios.

[out] ppv

Puntero a una variable de puntero en la que el método escribe la dirección de una instancia de la interfaz solicitada. A través de este método, el autor de la llamada obtiene una referencia contada a la interfaz . El autor de la llamada es responsable de liberar la interfaz, cuando ya no es necesario, llamando al método Release de la interfaz. Si se produce un error en la llamada a GetService , *ppv es NULL.

Valor devuelto

Si el método se realiza correctamente, devuelve S_OK. Si se produce un error, los posibles códigos de retorno incluyen, pero no están limitados a, los valores que se muestran en la tabla siguiente.

Código devuelto Descripción
E_POINTER
El parámetro ppv es NULL.
E_NOINTERFACE
La interfaz solicitada no está disponible.
AUDCLNT_E_NOT_INITIALIZED
La secuencia de audio no se ha inicializado.
AUDCLNT_E_WRONG_ENDPOINT_TYPE
El autor de la llamada intentó acceder a una interfaz IAudioCaptureClient en un punto de conexión de representación o una interfaz IAudioRenderClient en un punto de conexión de captura.
AUDCLNT_E_DEVICE_INVALIDATED
El dispositivo de punto de conexión de audio se ha desconectado o el hardware de audio o los recursos de hardware asociados se han reconfigurado, deshabilitado, quitado o no están disponibles para su uso.
AUDCLNT_E_SERVICE_NOT_RUNNING
El servicio de audio de Windows no se está ejecutando.

Comentarios

Este método requiere una inicialización previa de la interfaz IAudioClient . Todas las llamadas a este método producirán un error AUDCLNT_E_NOT_INITIALIZED hasta que el cliente inicialice la secuencia de audio llamando correctamente al método IAudioClient::Initialize .

El método GetService admite las siguientes interfaces de servicio:

En Windows 7, se ha agregado un nuevo identificador de servicio, IID_IMFTrustedOutput, que facilita el uso de objetos de autoridad de confianza de salida (OTA). Estos objetos pueden funcionar dentro o fuera de la ruta de acceso de medios protegida (PMP) de Media Foundation y enviar contenido fuera de la canalización de Media Foundation. Si el autor de la llamada está fuera de PMP, es posible que el OTA no funcione en el PMP y la configuración de protección sea menos sólida. Las OTA deben implementar la interfaz IMFTrustedOutput . Al pasar IID_IMFTrustedOutput en GetService, una aplicación puede recuperar un puntero a la interfaz IMFTrustedOutput del objeto. Para obtener más información sobre los objetos protegidos y IMFTrustedOutput, consulte "Ruta de acceso a medios protegidas" en la documentación del SDK de Media Foundation.

Para obtener información sobre el uso de controladores de audio de confianza en entidades organizativas, vea Audio en modo de usuario protegido (PUMA).

Tenga en cuenta que la activación de IMFTrustedOutput a través de este mecanismo funciona independientemente de si el autor de la llamada se ejecuta en PMP. Sin embargo, si el autor de la llamada no se ejecuta en un proceso protegido (es decir, el autor de la llamada no está dentro del PMP de Media Foundation), es posible que el audio OTA no funcione en el PMP y la configuración de protección sea menos sólida.

Para obtener el identificador de interfaz de una interfaz de servicio, use el operador __uuidof . Por ejemplo, el identificador de interfaz de IAudioCaptureClient se define de la siguiente manera:


const IID IID_IAudioCaptureClient  __uuidof(IAudioCaptureClient)

Para obtener información sobre el operador __uuidof, consulte la documentación de Windows SDK.

Para liberar el objeto IAudioClient y liberar todos sus recursos asociados, el cliente debe liberar todas las referencias a los objetos de servicio creados mediante una llamada a GetService, además de llamar a Release en la propia interfaz IAudioClient . El cliente debe liberar un servicio del mismo subproceso que libera el objeto IAudioClient .

Las interfaces IAudioSessionControl, IAudioStreamVolume, IChannelAudioVolume e ISimpleAudioVolume controlan y supervisan aspectos de las sesiones de audio y las secuencias en modo compartido. Estas interfaces no funcionan con secuencias en modo exclusivo.

Para obtener ejemplos de código que llaman al método GetService , consulte los temas siguientes:

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2008 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado audioclient.h

Consulte también

IAudioCaptureClient (interfaz)

IAudioClient (interfaz)

IAudioClient::Initialize

IAudioClock (interfaz)

IAudioRenderClient (Interfaz)

IAudioSessionControl (interfaz)

IAudioStreamVolume (interfaz)

IChannelAudioVolume (interfaz)

ISimpleAudioVolume (interfaz)