функция обратного вызова 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 |
См. также
- заголовка acxstreams.h
- EVT_ACX_STREAM_PREPARE_HARDWARE
- EVT_ACX_STREAM_RUN_HARDWARE
- EVT_ACX_STREAM_RELEASE_HARDWARE