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

La méthode GetService accède à des services supplémentaires à partir de l’objet client audio.

Syntaxe

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

Paramètres

[in] riid

ID d’interface du service demandé. Le client doit définir ce paramètre sur l’une des valeurs REFIID suivantes :

IID_IAudioCaptureClient

IID_IAudioClientDuckingControl

IID_IAudioClock

IID_IAudioRenderClient

IID_IAudioSessionControl

IID_IAudioStreamVolume

IID_IChannelAudioVolume

IID_IMFTrustedOutput

IID_ISimpleAudioVolume

Pour plus d'informations, consultez la section Notes.

[out] ppv

Pointeur vers une variable pointeur dans laquelle la méthode écrit l’adresse d’un instance de l’interface demandée. Grâce à cette méthode, l’appelant obtient une référence comptée à l’interface. L’appelant est chargé de libérer l’interface, lorsqu’elle n’est plus nécessaire, en appelant la méthode Release de l’interface. Si l’appel GetService échoue, *ppv a lavaleur NULL.

Valeur retournée

Si la méthode réussit, retourne S_OK. En cas d’échec, les codes de retour possibles incluent, sans s’y limiter, les valeurs indiquées dans le tableau suivant.

Code de retour Description
E_POINTER
Le paramètre ppv a la valeur NULL.
E_NOINTERFACE
L’interface demandée n’est pas disponible.
AUDCLNT_E_NOT_INITIALIZED
Le flux audio n’a pas été initialisé.
AUDCLNT_E_WRONG_ENDPOINT_TYPE
L’appelant a essayé d’accéder à une interface IAudioCaptureClient sur un point de terminaison de rendu ou à une interface IAudioRenderClient sur un point de terminaison de capture.
AUDCLNT_E_DEVICE_INVALIDATED
Le périphérique de point de terminaison audio a été débranché, ou le matériel audio ou les ressources matérielles associées ont été reconfigurés, désactivés, supprimés ou autrement indisponibles.
AUDCLNT_E_SERVICE_NOT_RUNNING
Le service audio Windows n’est pas en cours d’exécution.

Remarques

Cette méthode nécessite une initialisation préalable de l’interface IAudioClient . Tous les appels à cette méthode échouent avec l’erreur AUDCLNT_E_NOT_INITIALIZED jusqu’à ce que le client initialise le flux audio en appelant correctement la méthode IAudioClient ::Initialize .

La méthode GetService prend en charge les interfaces de service suivantes :

Dans Windows 7, un nouvel identificateur de service, IID_IMFTrustedOutput, a été ajouté qui facilite l’utilisation d’objets d’autorité d’approbation de sortie (OTA). Ces objets peuvent fonctionner à l’intérieur ou à l’extérieur du chemin d’accès multimédia protégé (PMP) de Media Foundation et envoyer du contenu en dehors du pipeline Media Foundation. Si l’appelant se trouve en dehors de PMP, l’OTA peut ne pas fonctionner dans le PMP et les paramètres de protection sont moins robustes. Les OTA doivent implémenter l’interface IMFTrustedOutput . En passant IID_IMFTrustedOutput dans GetService, une application peut récupérer un pointeur vers l’interface IMFTrustedOutput de l’objet. Pour plus d’informations sur les objets protégés et IMFTrustedOutput, consultez « Protected Media Path » dans la documentation du SDK Media Foundation.

Pour plus d’informations sur l’utilisation de pilotes audio approuvés dans les OTA, consultez Audio en mode utilisateur protégé (PUMA).

Notez que l’activation de IMFTrustedOutput par le biais de ce mécanisme fonctionne, que l’appelant s’exécute ou non dans PMP. Toutefois, si l’appelant n’est pas en cours d’exécution dans un processus protégé (autrement dit, l’appelant ne se trouve pas dans le PMP de Media Foundation), l’OTA audio peut ne pas fonctionner dans le PMP et les paramètres de protection sont moins robustes.

Pour obtenir l’ID d’interface d’une interface de service, utilisez l’opérateur __uuidof . Par exemple, l’ID d’interface de IAudioCaptureClient est défini comme suit :


const IID IID_IAudioCaptureClient  __uuidof(IAudioCaptureClient)

Pour plus d’informations sur l’opérateur __uuidof, consultez la documentation SDK Windows.

Pour libérer l’objet IAudioClient et libérer toutes ses ressources associées, le client doit libérer toutes les références à tous les objets de service créés en appelant GetService, en plus d’appeler Release sur l’interface IAudioClient elle-même. Le client doit libérer un service à partir du même thread que celui qui libère l’objet IAudioClient .

Les interfaces IAudioSessionControl, IAudioStreamVolume, IChannelAudioVolume et ISimpleAudioVolume contrôlent et surveillent les aspects des sessions audio et des flux en mode partagé. Ces interfaces ne fonctionnent pas avec des flux en mode exclusif.

Pour obtenir des exemples de code qui appellent la méthode GetService , consultez les rubriques suivantes :

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête audioclient.h

Voir aussi

IAudioCaptureClient Interface

IAudioClient Interface

IAudioClient ::Initialize

IAudioClock, interface

IAudioRenderClient Interface

IAudioSessionControl, interface

IAudioStreamVolume, interface

IChannelAudioVolume, interface

ISimpleAudioVolume, interface