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


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

Событие EvtAcxStreamPause сообщает драйверу о том, что необходимо перевести состояние потока из Run в Pause.

Синтаксис

EVT_ACX_STREAM_PAUSE EvtAcxStreamPause;

NTSTATUS EvtAcxStreamPause(
  ACXSTREAM Stream
)
{...}

Параметры

Stream

Объект ACXSTREAM представляет аудиопоток, созданный каналом. Поток состоит из списка элементов, созданных на основе элементов родительского канала. Дополнительные сведения см. в разделе ACX — сводка по объектам ACX.

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

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

Комментарии

AcxStream поддерживает различные состояния. Эти состояния указывают, когда поток звука (состояние RUN), звук не течет, но звуковое оборудование подготовлено (состояние PAUSE) или звук не течет и звуковое оборудование не подготовлено (состояние STOP).

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

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

События ACX аналогичны состояниям KS, как описано в этой таблице.

Состояние запуска Конечное состояние Вызывается событие драйвера ACX Примечания
STOP ПРИОБРЕСТИ PrepareHardware Драйвер выполняет выделение оборудования и подготовку
ПРИОБРЕСТИ PAUSE (Без вызова)
PAUSE ВЫПОЛНИТЬ Выполнить
ВЫПОЛНИТЬ PAUSE Пауза
PAUSE ПРИОБРЕСТИ (Без вызова)
ПРИОБРЕСТИ STOP 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

См. также раздел