EVT_ACX_STREAM_PAUSE回调函数 (acxstreams.h)

EvtAcxStreamPause 事件告知驱动程序将流状态从“运行”转换到“暂停”。

语法

EVT_ACX_STREAM_PAUSE EvtAcxStreamPause;

NTSTATUS EvtAcxStreamPause(
  ACXSTREAM Stream
)
{...}

参数

Stream

ACXSTREAM 对象表示线路创建的音频流。 该流由基于父线路的元素创建的元素列表组成。 有关详细信息,请参阅 ACX - ACX 对象的摘要

返回值

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

言论

AcxStream 支持不同的状态。 这些状态指示音频何时流动(RUN 状态),音频未流动,但音频硬件已准备好(PAUSE 状态),或者音频未流动,音频硬件未准备(停止状态)。

EvtAcxStreamPause 事件会将流状态从“运行”状态转换为“暂停”状态。 流处于暂停状态后,驱动程序可能会收到 EvtAcxStreamRun 事件以转换为运行状态,或者驱动程序可能会收到 EvtAcxStreamReleaseHardware 事件以转换为 Stop 状态。

在 ACX 设备关闭和删除期间,如果存在流,ACX 将调用 EvtAcxStreamPause 将流转换为暂停。 这是流实例的范围。

ACX 事件类似于 KS 状态,如下表所述。

启动状态 结束状态 调用 ACX 驱动程序事件 笔记
获得 PrepareHardware 驱动程序执行硬件分配和准备
获得 暂停 (无呼叫)
暂停
暂停 暂停
暂停 获得 (无呼叫)
获得 ReleaseHardware 驱动程序发布硬件分配

示例用法如下所示。

    ACX_STREAM_CALLBACKS streamCallbacks;
    ACX_STREAM_CALLBACKS_INIT(&streamCallbacks);
    streamCallbacks.EvtAcxStreamPause = EvtStreamPause;
    ...
    status = AcxStreamInitAssignAcxStreamCallbacks(StreamInit, &streamCallbacks);
#pragma code_seg("PAGE")
NTSTATUS
EvtStreamPause(
    _In_ ACXSTREAM Stream
    )
{
    PSTREAM_CONTEXT ctx;
    NTSTATUS        status = STATUS_SUCCESS;

    PAGED_CODE();

    ctx = GetStreamContext(Stream);

    status = TransitionStreamToPause(Stream);

    ctx->StreamState = AcxStreamStatePause;

    return status;
}

ACX 要求

最低 ACX 版本: 1.0

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

要求

要求 价值
标头 acxstreams.h
IRQL PASSIVE_LEVEL

另请参阅