Condividi tramite


EVT_ACX_VOLUME_ASSIGN_LEVEL funzione di callback (acxelements.h)

La EVT_ACX_VOLUME_ASSIGN_LEVEL funzione di callback viene implementata dal driver e viene chiamata quando il livello di volume di un canale viene impostato per un nodo del volume.

Sintassi

EVT_ACX_VOLUME_ASSIGN_LEVEL EvtAcxVolumeAssignLevel;

NTSTATUS EvtAcxVolumeAssignLevel(
  ACXVOLUME Volume,
  ULONG Channel,
  LONG VolumeLevel
)
{...}

Parametri

Volume

Oggetto ACXVOLUME esistente inizializzato. Per altre informazioni sugli oggetti ACX, vedere Riepilogo degli oggetti ACX.

Channel

ULONG che fa riferimento a un canale nel nodo del volume specificato. Se questo valore è -1, fa riferimento al canale master che rappresenta il livello di volume per tutti i canali nel nodo del volume.

VolumeLevel

Valore LONG che specifica il livello di volume di un canale in un nodo del volume. Se il valore del canale è -1 (facendo riferimento al canale master), tutti i canali in questo nodo del volume verranno impostati su questo livello di volume. I valori a livello di volume usano la scala seguente:

-2147483648 è -infinity decibel (attenuazione),

-2147483647 è -32767.99998474 decibel (attenuazione) e

+2147483647 è +32767,99998474 decibel (guadagno).

Valore restituito

Restituisce STATUS_SUCCESS se la chiamata ha avuto esito positivo. In caso contrario, restituisce un codice di errore appropriato. Per altre informazioni, vedere Uso dei valori NTSTATUS.

Commenti

Esempio

Di seguito è riportato un esempio di utilizzo.

typedef struct _VOLUME_ELEMENT_CONTEXT {
    LONG            VolumeLevel[MAX_CHANNELS];
} VOLUME_ELEMENT_CONTEXT, *PVOLUME_ELEMENT_CONTEXT;

WDF_DECLARE_CONTEXT_TYPE_WITH_NAME(VOLUME_ELEMENT_CONTEXT, GetVolumeElementContext)

EVT_ACX_VOLUME_ASSIGN_LEVEL         CodecC_EvtVolumeAssignLevelCallback;

NTSTATUS
CodecC_EvtVolumeAssignLevelCallback(
    _In_    ACXVOLUME   Volume,
    _In_    ULONG       Channel,
    _In_    LONG        VolumeLevel
)
{
    PAGED_CODE();

    ASSERT(Volume);
    PVOLUME_ELEMENT_CONTEXT volumeCtx = GetVolumeElementContext(Volume);
    ASSERT(volumeCtx);

    if (Channel != ALL_CHANNELS_ID)
    {
        volumeCtx->VolumeLevel[Channel] = VolumeLevel;
    }
    else
    {
        for (ULONG i = 0; i < MAX_CHANNELS; ++i)
        {
            volumeCtx->VolumeLevel[i] = VolumeLevel;
        }
    }

    return STATUS_SUCCESS;
}

Requisiti di ACX

Versione minima di ACX: 1.0

Per altre informazioni sulle versioni ACX, vedere La panoramica della versione di ACX.

Requisiti

Requisito Valore
Intestazione acxelements.h
IRQL PASSIVE_LEVEL

Vedi anche