функция обратного вызова 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 |