EVT_ACX_RAMPED_VOLUME_ASSIGN_LEVEL función de devolución de llamada (acxelements.h)

El controlador implementa el EVT_ACX_RAMPED_VOLUME_ASSIGN_LEVEL devolución de llamada y se llama cuando se establece el nivel de volumen de un canal para un nodo de volumen.

Sintaxis

EVT_ACX_RAMPED_VOLUME_ASSIGN_LEVEL EvtAcxRampedVolumeAssignLevel;

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

Parámetros

Volume

Objeto ACXVOLUME existente, inicializado. Para obtener más información sobre los objetos ACX, vea Resumen de objetos ACX.

Channel

Un ULONG que hace referencia a un canal en el nodo de volumen especificado. Si este valor es -1, hace referencia al canal maestro que representa el nivel de volumen de todos los canales del nodo de volumen.

VolumeLevel

Valor LONG que especifica el nivel de volumen final deseado para el canal especificado. Si el valor del canal es -1 (que hace referencia al canal maestro), todos los canales de este nodo de volumen se establecerán en este nivel de volumen. Los valores de nivel de volumen usan la siguiente escala:

-2147483648 es -decibelios infinitos (atenuación),

-2147483647 es -32767.999998474 decibeles (atenuación) y

+2147483647 es +32767.99998474 decibels (ganancia).

CurveType

Usa la enumeración AUDIO_CURVE_TYPE para especificar el algoritmo de curva que se aplicará durante la duración especificada, con el fin de alcanzar el nivel deseado. La curva comienza en el nivel de volumen actual y termina en el nivel de volumen de destino especificado en el parámetro Volume.

CurveDuration

Especifica la duración, en cientos de nanosegundos, sobre los que debe surtir efecto la curva de volumen.

Valor devuelto

Devuelve STATUS_SUCCESS si la llamada se realizó correctamente. De lo contrario, devuelve un código de error adecuado. Para obtener más información, vea Uso de valores NTSTATUS.

Comentarios

Ejemplo

A continuación se muestra el uso de ejemplo.

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

Requisitos de ACX

Versión mínima de ACX: 1.0

Para obtener más información sobre las versiones de ACX, consulte Introducción a la versión de ACX.

Requisitos

Requisito Valor
Header acxelements.h
IRQL PASSIVE_LEVEL

Consulte también