Condividi tramite


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 dell'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 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 contato 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, restituisce S_OK. Se ha esito negativo, i possibili codici restituiti includono, ma non sono limitati, i valori illustrati nella tabella seguente.

Codice restituito Description
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 a un'interfaccia IAudioRenderClient in un endpoint di acquisizione.
AUDCLNT_E_DEVICE_INVALIDATED
Il dispositivo endpoint audio è stato scollegato oppure l'hardware audio o le risorse hardware associate sono state riconfigurate, disabilitate, rimosse o altrimenti rese non disponibili per l'uso.
AUDCLNT_E_RESOURCES_INVALIDATED
Le risorse del flusso sono state invalidate. Questo errore può essere generato per i motivi seguenti:
- Il flusso è sospeso.
- Un flusso esclusivo o offload viene disconnesso.
- Un'applicazione in pacchetto che ha una modalità esclusiva o un flusso di offload è inattiva.
- Un flusso di "output protetto" viene chiuso.
AUDCLNT_E_SERVICE_NOT_RUNNING
Il servizio audio windows non è in esecuzione.

Osservazioni:

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 non 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 di oggetti OTA (Output Trust Authority). Questi oggetti possono operare all'interno o all'esterno del percorso multimediale protetto di Media Foundation (PMP) e inviare contenuti 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 IMFTrustedOutput . Passando IID_IMFTrustedOutput in GetService, un'applicazione può recuperare un puntatore all'interfaccia IMFTrustedOutput dell'oggetto. Per altre informazioni sugli oggetti protetti e SU IMFTrustedOutput, vedere "Protected Media Path" (Percorso multimediale protetto) nella documentazione di Media Foundation SDK.

Per informazioni sull'uso di driver audio attendibili in OTAs, vedere Protected User Mode Audio (MDF).

Si noti che l'attivazione di IMFTrustedOutput 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'OTA audio potrebbe non funzionare nel PMP e le impostazioni di protezione sono meno robuste.

Per ottenere l'ID interfaccia per un'interfaccia del 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 servizio creati chiamando GetService, oltre a chiamare Release sull'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 e monitorano 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 Value
Client minimo supportato Windows Vista [app desktop | App UWP]
Server minimo supportato Windows Server 2008 [app desktop | App UWP]
Piattaforma di destinazione Windows
Header audioclient.h

Vedere anche

Interfaccia IAudioCaptureClient

Interfaccia IAudioClient

IAudioClient::Initialize

Interfaccia IAudioClock

Interfaccia IAudioRenderClient

Interfaccia IAudioSessionControl

Interfaccia IAudioStreamVolume

Interfaccia IChannelAudioVolume

Interfaccia ISimpleAudioVolume