Condividi tramite


Metodo IPerChannelDbLevel::SetLevelAllChannels (devicetopology.h)

Il metodo SetLevelAllChannels imposta i livelli di volume, in decibel, di tutti i canali nel flusso audio.

Sintassi

HRESULT SetLevelAllChannels(
  [in] float [] aLevelsDB,
  [in] ULONG    cChannels,
  [in] LPCGUID  pguidEventContext
);

Parametri

[in] aLevelsDB

Puntatore a una matrice di livelli di volume. Questo parametro punta a una matrice float allocata dal chiamante in cui il metodo scrive i nuovi livelli di volume, in decibel, per tutti i canali. Il metodo scrive il livello per un determinato canale nell'elemento matrice il cui indice corrisponde al numero di canale. Se il flusso audio contiene n canali, i canali vengono numerati da 0 a n- 1. Per ottenere il numero di canali nel flusso, chiamare il metodo IPerChannelDbLevel::GetChannelCount .

[in] cChannels

Numero di elementi nella matrice aLevelsDB . Se questo parametro non corrisponde al numero di canali nel flusso audio, il metodo non riesce senza modificare la matrice aLevelsDB .

[in] pguidEventContext

Valore di contesto per il metodo IControlChangeNotify::OnNotify . Questo parametro punta a un GUID di contesto evento. Se la chiamata SetLevelAllChannels modifica lo stato del controllo a livello, tutti i client che hanno registrato interfacce IControlChangeNotify con tale controllo ricevono notifiche. Nell'implementazione del metodo OnNotify , un client può esaminare il GUID del contesto evento per individuare se è l'origine dell'evento control-change o di un altro client. Se il chiamante fornisce un puntatore NULL per questo parametro, il metodo di notifica del client riceve un puntatore di contesto 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_INVALIDARG
Parametro cChannels non è uguale al numero di canali.
E_POINTER
Puntatore aLevelsDB è NULL.
E_OUTOFMEMORY
Memoria insufficiente.

Commenti

Se il valore di livello specificato per qualsiasi canale supera l'intervallo segnalato dal metodo IPerChannelDbLevel::GetLevelRange per tale canale, la chiamata SetLevelAllChannels blocca il valore all'intervallo supportato e completa correttamente. Una chiamata successiva al metodo IPerChannelDbLevel::GetLevel recupera il valore effettivo usato per tale canale.

Requisiti

   
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione devicetopology.h

Vedi anche

Interfaccia IPerChannelDbLevel

IPerChannelDbLevel::GetChannelCount

IPerChannelDbLevel::GetLevel

IPerChannelDbLevel::GetLevelRange