функция обратного вызова EVT_ACX_STREAM_RUN (acxstreams.h)
Событие EvtAcxStreamRun сообщает драйверу о том, что необходимо перевести состояние потока из паузы в run.
Синтаксис
EVT_ACX_STREAM_RUN EvtAcxStreamRun;
NTSTATUS EvtAcxStreamRun(
ACXSTREAM Stream
)
{...}
Параметры
Stream
Объект ACXSTREAM представляет аудиопоток, созданный каналом. Поток состоит из списка элементов, созданных на основе элементов родительского канала. Дополнительные сведения см. в разделе ACX — сводка по объектам ACX.
Возвращаемое значение
Возвращает значение STATUS_SUCCESS
, если вызов был выполнен успешно. В противном случае возвращается соответствующий код ошибки. Дополнительные сведения см. в разделе Использование значений NTSTATUS.
Комментарии
AcxStream поддерживает различные состояния. Эти состояния указывают, когда поток звука (состояние RUN), звук не течет, но звуковое оборудование подготовлено (состояние PAUSE) или звук не течет и звуковое оборудование не подготовлено (состояние STOP).
Событие EvtAcxStreamRun передаст состояние потока из состояния Пауза в состояние Выполнить. Когда поток перейдет в состояние Выполнения, драйвер может получить событие EvtAcxStreamPause для перехода в состояние Приостановка.
События ACX аналогичны состояниям KS, как описано в этой таблице.
Состояние запуска | Конечное состояние | Вызывается событие драйвера ACX | Примечания |
---|---|---|---|
STOP | ПРИОБРЕСТИ | PrepareHardware | Драйвер выполняет выделение оборудования и подготовку |
ПРИОБРЕСТИ | PAUSE | (Без вызова) | |
PAUSE | ВЫПОЛНИТЬ | Выполнить | |
ВЫПОЛНИТЬ | PAUSE | Пауза | |
PAUSE | ПРИОБРЕСТИ | (Без вызова) | |
ПРИОБРЕСТИ | STOP | ReleaseHardware | Драйвер освобождает выделение оборудования |
Пример
Ниже приведен пример использования.
ACX_STREAM_CALLBACKS streamCallbacks;
ACX_STREAM_CALLBACKS_INIT(&streamCallbacks);
streamCallbacks.EvtAcxStreamRun = EvtStreamRun;
...
status = AcxStreamInitAssignAcxStreamCallbacks(StreamInit, &streamCallbacks);
_Use_decl_annotations_
PAGED_CODE_SEG
NTSTATUS
EvtStreamRun(
_In_ ACXSTREAM Stream
)
{
PSTREAM_CONTEXT ctx;
NTSTATUS status;
PAGED_CODE();
ctx = GetStreamContext(Stream);
status = TransitionStreamToRun(Stream);
if (NT_SUCCESS(status))
{
ctx->StreamState = AcxStreamStateRun;
}
return status;
}
Требования к ACX
Минимальная версия ACX: 1.0
Дополнительные сведения о версиях ACX см. в статье Обзор версий ACX.
Требования
Требование | Значение |
---|---|
Заголовок | acxstreams.h |
IRQL | PASSIVE_LEVEL |