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


функция обратного вызова 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), или звук не выполняется, а звуковое оборудование не подготовлено (состояние STOP).

Событие EvtAcxStreamPause передаст состояние потока из состояния run в состояние "Пауза". Когда поток находится в состоянии Приостановки, драйвер может получить событие EvtAcxStreamRun для перехода в состояние выполнения или драйвер может получить событие EvtAcxStreamReleaseHardware для перехода в состояние Stop.

При отключении и удалении устройства ACX, если потоки присутствуют, ACX вызовет EvtAcxStreamPause для перехода потоков на приостановку. Это область действия экземпляра Stream.

События 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

См. также