Metodo IAudioClient::GetService (audioclient.h)

Il metodo GetService accede a servizi aggiuntivi dall'oggetto client audio.

Sintassi

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

Parametri

[in] riid

ID interfaccia per il servizio richiesto. Il client deve impostare questo parametro su uno dei valori REFIID seguenti:

IID_IAudioCaptureClient

IID_IAudioClientDuckingControl

IID_IAudioClock

IID_IAudioRenderClient

IID_IAudioSessionControl

IID_IAudioStreamVolume

IID_IChannelAudioVolume

IID_IMFTrustedOutput

IID_ISimpleAudioVolume

Per altre informazioni, vedere la sezione Osservazioni.

[out] ppv

Puntatore a una variabile puntatore in cui il metodo scrive l'indirizzo di un'istanza dell'interfaccia richiesta. Tramite questo metodo, il chiamante ottiene un riferimento conteggiato all'interfaccia. Il chiamante è responsabile del rilascio dell'interfaccia, quando non è più necessario, chiamando il metodo Release dell'interfaccia. Se la chiamata GetService ha esito negativo, *ppv è NULL.

Valore restituito

Se il metodo ha esito positivo, viene restituito S_OK. Se ha esito negativo, i codici restituiti possibili includono, ma non sono limitati a, i valori visualizzati nella tabella seguente.

Codice restituito Descrizione
E_POINTER
Il parametro ppv è NULL.
E_NOINTERFACE
L'interfaccia richiesta non è disponibile.
AUDCLNT_E_NOT_INITIALIZED
Il flusso audio non è stato inizializzato.
AUDCLNT_E_WRONG_ENDPOINT_TYPE
Il chiamante ha tentato di accedere a un'interfaccia IAudioCaptureClient in un endpoint di rendering o in un'interfaccia IAudioRenderClient in un endpoint di acquisizione.
AUDCLNT_E_DEVICE_INVALIDATED
Il dispositivo endpoint audio è stato scollegato o l'hardware audio o le risorse hardware associate sono state riconfigurate, disabilitate, rimosse o altrimenti non disponibili per l'uso.
AUDCLNT_E_SERVICE_NOT_RUNNING
Il servizio audio Di Windows non è in esecuzione.

Commenti

Questo metodo richiede l'inizializzazione precedente dell'interfaccia IAudioClient . Tutte le chiamate a questo metodo avranno esito negativo con l'errore AUDCLNT_E_NOT_INITIALIZED finché il client inizializza il flusso audio chiamando correttamente il metodo IAudioClient::Initialize .

Il metodo GetService supporta le interfacce di servizio seguenti:

In Windows 7 è stato aggiunto un nuovo identificatore del servizio, IID_IMFTrustedOutput, che facilita l'uso degli oggetti OTA (Output Trust Authority). Questi oggetti possono funzionare all'interno o all'esterno del percorso multimediale protetto di Media Foundation (PMP) e inviare contenuto all'esterno della pipeline di Media Foundation. Se il chiamante è esterno a PMP, l'OTA potrebbe non funzionare nel PMP e le impostazioni di protezione sono meno affidabili. Gli OTA devono implementare l'interfaccia FMTrustedOutput . Passando IID_IMFTrustedOutput in GetService, un'applicazione può recuperare un puntatore all'interfaccia FMTrustedOutput dell'oggetto. Per altre informazioni sugli oggetti protetti e FMTrustedOutput, vedere "Percorso multimediale protetto" nella documentazione di Media Foundation SDK.

Per informazioni sull'uso di driver audio attendibili in OTA, vedere Audio in modalità utente protetta (PUMA).

Si noti che l'attivazione di FMTrustedOutput tramite questo meccanismo funziona indipendentemente dal fatto che il chiamante sia in esecuzione in PMP. Tuttavia, se il chiamante non è in esecuzione in un processo protetto ,ovvero il chiamante non è all'interno del PMP di Media Foundation, l'audio OTA potrebbe non funzionare nel PMP e le impostazioni di protezione sono meno affidabili.

Per ottenere l'ID interfaccia per un'interfaccia di servizio, usare l'operatore __uuidof . Ad esempio, l'ID interfaccia di IAudioCaptureClient è definito come segue:


const IID IID_IAudioCaptureClient  __uuidof(IAudioCaptureClient)

Per informazioni sull'operatore __uuidof, vedere la documentazione di Windows SDK.

Per rilasciare l'oggetto IAudioClient e liberare tutte le risorse associate, il client deve rilasciare tutti i riferimenti a tutti gli oggetti di servizio creati chiamando GetService, oltre a chiamare Release nell'interfaccia IAudioClient stessa. Il client deve rilasciare un servizio dallo stesso thread che rilascia l'oggetto IAudioClient .

Le interfacce IAudioSessionControl, IAudioStreamVolume, IChannelAudioVolume e ISimpleAudioVolume controllano gli aspetti delle sessioni audio e dei flussi in modalità condivisa. Queste interfacce non funzionano con flussi in modalità esclusiva.

Per esempi di codice che chiamano il metodo GetService , vedere gli argomenti seguenti:

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [app desktop | App UWP]
Server minimo supportato Windows Server 2008 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione audioclient.h

Vedi anche

Interfaccia IAudioCaptureClient

Interfaccia IAudioClient

IAudioClient::Initialize

Interfaccia IAudioClock

Interfaccia IAudioRenderClient

Interfaccia IAudioSessionControl

Interfaccia IAudioStreamVolume

Interfaccia IChannelAudioVolume

Interfaccia ISimpleAudioVolume