Partager via


EVT_ACX_RAMPED_VOLUME_ASSIGN_LEVEL fonction de rappel (acxelements.h)

Le rappel EVT_ACX_RAMPED_VOLUME_ASSIGN_LEVEL est implémenté par le pilote et est appelé lorsque le niveau de volume d’un canal est défini pour un nœud de volume.

Syntaxe

EVT_ACX_RAMPED_VOLUME_ASSIGN_LEVEL EvtAcxRampedVolumeAssignLevel;

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

Paramètres

Volume

Objet ACXVOLUME initialisé existant. Pour plus d’informations sur les objets ACX, consultez Résumé des objets ACX.

Channel

ULONG faisant référence à un canal sur le nœud de volume spécifié. Si cette valeur est -1, elle fait référence au canal master qui représente le niveau de volume de tous les canaux sur le nœud de volume.

VolumeLevel

Valeur LONG qui spécifie le niveau de volume final souhaité pour le canal donné. Si la valeur du canal est -1 (faisant référence au canal master), tous les canaux de ce nœud de volume sont définis sur ce niveau de volume. Les valeurs de niveau volume utilisent l’échelle suivante :

-2147483648 est -infinity decibels (atténuation),

-2147483647 est -32767.99998474 décibels (atténuation), et

+2147483647 est +32767.99998474 décibels (gain).

CurveType

Utilise l’énumération AUDIO_CURVE_TYPE pour spécifier l’algorithme de courbe à appliquer sur la durée spécifiée, afin d’atteindre le niveau souhaité. La courbe commence au niveau de volume actuel et se termine au niveau de volume cible spécifié dans le paramètre Volume.

CurveDuration

Spécifie la durée, en centaines de nanosecondes, sur laquelle la courbe de volume doit prendre effet.

Valeur retournée

Retourne STATUS_SUCCESS si l’appel a réussi. Sinon, il retourne un code d’erreur approprié. Pour plus d’informations, consultez Utilisation de valeurs NTSTATUS.

Remarques

Exemple

L’exemple d’utilisation est illustré ci-dessous.

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;
}

Configuration requise d’ACX

Version minimale d’ACX : 1.0

Pour plus d’informations sur les versions d’ACX, consultez Vue d’ensemble des versions d’ACX.

Configuration requise

Condition requise Valeur
En-tête acxelements.h
IRQL PASSIVE_LEVEL

Voir aussi