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


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

Функция обратного вызова EVT_ACX_VOLUME_ASSIGN_LEVEL реализуется драйвером и вызывается при установке уровня тома для узла тома.

Синтаксис

EVT_ACX_VOLUME_ASSIGN_LEVEL EvtAcxVolumeAssignLevel;

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

Параметры

Volume

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

Channel

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

VolumeLevel

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

-2147483648 -infinity децибел (attenuation),

-2147483647 равно -32767.99998474 децибели (аттенуация) и

+2147483647 имеет значение +32767.99998474 децибели (прирост).

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

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

Замечания

Пример

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

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

Требования к ACX

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

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

Требования

Требование Ценность
заголовка acxelements.h
IRQL PASSIVE_LEVEL

См. также