Поделиться через


функция обратного вызова EVT_ACX_RAMPED_VOLUME_ASSIGN_LEVEL (acxelements.h)

Обратный вызов EVT_ACX_RAMPED_VOLUME_ASSIGN_LEVEL реализуется драйвером и вызывается, когда уровень тома канала задан для узла тома.

Синтаксис

EVT_ACX_RAMPED_VOLUME_ASSIGN_LEVEL EvtAcxRampedVolumeAssignLevel;

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

Параметры

Volume

Существующий инициализированный объект ACXVOLUME. Дополнительные сведения об объектах ACX см. в разделе Сводка по объектам ACX.

Channel

Объект ULONG, ссылающийся на канал на указанном узле тома. Если это значение равно -1, оно ссылается на канал master, который представляет уровень тома для всех каналов на узле тома.

VolumeLevel

Значение LONG, указывающее требуемый конечный уровень тома для заданного канала. Если значение канала равно -1 (ссылается на канал master), то для всех каналов на этом узле тома будет задан этот уровень тома. Значения уровня тома используют следующую шкалу:

-2147483648 является децибелами -бесконечности (затухание),

-2147483647 равно -32767,99998474 децибел (затухание) и

+2147483647 равно +32767.99998474 децибел (выигрыш).

CurveType

Использует перечисление AUDIO_CURVE_TYPE , чтобы указать алгоритм кривой, применяемый в течение указанного периода, чтобы достичь нужного уровня. Кривая начинается с текущего уровня тома и заканчивается на целевом уровне тома, указанном в параметре Volume.

CurveDuration

Указывает длительность (в сотнях наносекунд), в течение которой кривая объема должна ввести в действие.

Возвращаемое значение

Возвращает значение STATUS_SUCCESS , если вызов был успешным. В противном случае возвращается соответствующий код ошибки. Дополнительные сведения см. в разделе Использование значений NTSTATUS.

Remarks

Пример

Ниже приведен пример использования.

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

Требования ACX

Минимальная версия ACX: 1.0

Дополнительные сведения о версиях ACX см. в статье Обзор версий ACX.

Требования

Требование Значение
Заголовок acxelements.h
IRQL PASSIVE_LEVEL

См. также раздел