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 -infinity 데시벨(감쇠)입니다.

-2147483647 -32767.99998474 데시벨(감쇠) 및

+2147483647 +32767.99998474 데시벨(게인)입니다.

CurveType

AUDIO_CURVE_TYPE 열거형을 사용하여 지정된 기간 동안 적용할 곡선 알고리즘을 지정하여 원하는 수준에 도달합니다. 곡선은 현재 볼륨 수준에서 시작하여 Volume 매개 변수에 지정된 대상 볼륨 수준에서 끝납니다.

CurveDuration

볼륨 곡선이 적용되어야 하는 기간을 수백 나노초 단위로 지정합니다.

반환 값

호출이 성공하면 를 반환합니다 STATUS_SUCCESS . 그렇지 않으면 적절한 오류 코드를 반환합니다. 자세한 내용은 NTSTATUS 값 사용을 참조하세요.

설명

예제

사용 예제는 다음과 같습니다.

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

추가 정보