Condividi tramite


EVT_ACX_RAMPED_VOLUME_ASSIGN_LEVEL funzione di callback (acxelements.h)

Il callback EVT_ACX_RAMPED_VOLUME_ASSIGN_LEVEL viene implementato dal driver e viene chiamato quando il livello di volume di un canale è impostato per un nodo del volume.

Sintassi

EVT_ACX_RAMPED_VOLUME_ASSIGN_LEVEL EvtAcxRampedVolumeAssignLevel;

NTSTATUS EvtAcxRampedVolumeAssignLevel(
  ACXVOLUME Volume,
  ULONG Channel,
  LONG VolumeLevel,
  ACX_VOLUME_CURVE_TYPE CurveType,
  ULONGLONG CurveDuration
)
{...}

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, si riferisce al canale master che rappresenta il livello del volume per tutti i canali nel nodo del volume.

VolumeLevel

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

-2147483648 è -infinito decibel (attenuazione),

-2147483647 è -32767.99998474 decibel (attenuazione) e

+2147483647 è +32767.99998474 decibel (guadagno).

CurveType

Usa l'enumerazione AUDIO_CURVE_TYPE per specificare l'algoritmo di curva da applicare sulla durata specificata, per raggiungere il livello desiderato. La curva inizia a livello di volume corrente e termina a livello di volume di destinazione specificata nel parametro Volume.

CurveDuration

Specifica la durata, in centinaia di nanosecondi, su cui deve essere effettiva la curva del volume.

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 l'esempio di utilizzo.

typedef struct _CODEC_VOLUME_ELEMENT_CONTEXT {
    LONG            VolumeLevel[MAX_CHANNELS];
} CODEC_VOLUME_ELEMENT_CONTEXT, *PCODEC_VOLUME_ELEMENT_CONTEXT;

WDF_DECLARE_CONTEXT_TYPE_WITH_NAME(CODEC_VOLUME_ELEMENT_CONTEXT, GetCodecVolumeElementContext)

EVT_ACX_RAMPED_VOLUME_ASSIGN_LEVEL              CodecR_EvtRampedVolumeAssignLevel;

NTSTATUS
NTAPI
CodecR_EvtRampedVolumeAssignLevel(
    _In_ ACXVOLUME              Volume,
    _In_ ULONG                  Channel,
    _In_ LONG                   VolumeLevel,
    _In_ ACX_VOLUME_CURVE_TYPE  CurveType,
    _In_ ULONGLONG              CurveDuration
    )
{
    PCODEC_VOLUME_ELEMENT_CONTEXT   volumeCtx;
    ULONG                           i;

    PAGED_CODE();

    UNREFERENCED_PARAMETER(CurveType);
    UNREFERENCED_PARAMETER(CurveDuration);

    volumeCtx = GetCodecVolumeElementContext(Volume);
    ASSERT(volumeCtx);

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

    return STATUS_SUCCESS;
}

Requisiti ACX

Versione minima DI ACX: 1.0

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

Requisiti

Requisito Valore
Intestazione acxelements.h
IRQL PASSIVE_LEVEL

Vedi anche