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

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

Sintaxis

EVT_ACX_VOLUME_ASSIGN_LEVEL EvtAcxVolumeAssignLevel;

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

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 de un canal en un nodo de volumen. 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).

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

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