EVT_ACX_AUDIOENGINE_RETRIEVE_BUFFER_SIZE_LIMITS回调函数 (acxelements.h)

EVT_ACX_AUDIOENGINE_RETRIEVE_BUFFER_SIZE_LIMITS回调由驱动程序实现,在为指定的音频引擎请求给定数据格式的缓冲区大小限制时调用。

语法

EVT_ACX_AUDIOENGINE_RETRIEVE_BUFFER_SIZE_LIMITS EvtAcxAudioengineRetrieveBufferSizeLimits;

NTSTATUS EvtAcxAudioengineRetrieveBufferSizeLimits(
  ACXAUDIOENGINE AudioEngine,
  ACXDATAFORMAT Format,
  PULONG MinBufferSizeInBytes,
  PULONG MaxBufferSizeInBytes
)
{...}

参数

AudioEngine

已为其请求缓冲区大小限制的 ACXAUDIOENGINE 对象。 有关 ACX 对象的详细信息,请参阅 ACX 对象的摘要

Format

回调确定音频引擎可以容纳的最小和最大缓冲区大小的 ACXDATAFORMAT。

MinBufferSizeInBytes

硬件音频引擎在调用时在 实例上可以支持的给定数据格式的最小缓冲区大小。 缓冲区大小以字节为单位指定。

MaxBufferSizeInBytes

调用时,硬件音频引擎可以支持的给定数据格式的最大缓冲区大小。 缓冲区大小以字节为单位指定。

返回值

STATUS_SUCCESS如果调用成功,则返回 。 否则,它将返回相应的错误代码。 有关详细信息,请参阅 使用 NTSTATUS 值

备注

示例

示例用法如下所示。

EVT_ACX_AUDIOENGINE_RETRIEVE_BUFFER_SIZE_LIMITS CodecR_EvtAcxAudioEngineRetrieveBufferSizeLimits;

NTSTATUS
CodecR_EvtAcxAudioEngineRetrieveBufferSizeLimits(
    _In_    ACXAUDIOENGINE  AudioEngine,
    _In_    ACXDATAFORMAT   DataFormat,
    _Out_   PULONG          MinBufferBytes,
    _Out_   PULONG          MaxBufferBytes
    )
{
    PAGED_CODE();

    ULONG bytesPerSecond = AcxDataFormatGetAverageBytesPerSec(DataFormat);

    *MinBufferBytes = (ULONG) (MIN_AUDIOENGINE_BUFFER_DURATION_IN_MS * bytesPerSecond / 1000);
    *MaxBufferBytes = (ULONG) (MAX_AUDIOENGINE_BUFFER_DURATION_IN_MS * bytesPerSecond / 1000);

    return STATUS_SUCCESS;
}

ACX 要求

最低 ACX 版本: 1.0

有关 ACX 版本的详细信息,请参阅 ACX 版本概述

要求

要求
Header acxelements.h
IRQL PASSIVE_LEVEL

另请参阅