Функция AcxStreamCreate (acxstreams.h)
AcxStreamCreate создает Stream ACX, который можно использовать для управления поведением потоковой передачи.
Синтаксис
NTSTATUS AcxStreamCreate(
WDFDEVICE Device,
ACXCIRCUIT Circuit,
PWDF_OBJECT_ATTRIBUTES Attributes,
PACXSTREAM_INIT *Config,
ACXSTREAM *Stream
);
Параметры
Device
Объект WDFDEVICE ( описанный в разделе Сводка объектов платформы), связанный с указанным ACXCIRCUIT и его потоком.
Circuit
ACXCIRCUIT, с которым будет связан этот поток.
Attributes
Дополнительные атрибуты, определенные с помощью WDF_OBJECT_ATTRIBUTES , которые используются для задания значений различных объектов: очистки и уничтожения обратных вызовов, типа контекста и указания его родительского объекта.
Config
Структура ACXSTREAM_INIT, определяющая параметры инициализации потока. Дополнительные сведения об объектах ACX см. в разделе ACX — сводка по объектам ACX.
Stream
Указатель на расположение, которое получает дескриптор нового объекта ACXSTREAM.
Объект ACXSTREAM представляет звуковой поток, созданный каналом. Дополнительные сведения см. в разделе ACX — сводка по объектам ACX.
Возвращаемое значение
Возвращает значение STATUS_SUCCESS
, если вызов был успешным. В противном случае возвращается соответствующий код ошибки. Дополнительные сведения см. в разделе Использование значений NTSTATUS.
Комментарии
После создания ACXSTREAM драйвер может добавить в поток один или несколько элементов ACX. По умолчанию элементы ACX соединены в одном порядке сборки. ACXSTREAM связан только с одним ACXCIRCUIT. ACX поддерживает два типа потоков: базовые объекты потока ACX, используемые каналами без потоковой передачи, и объекты потока ACX RealTime (RT), используемые каналами потоковой передачи.
ACXSTREAM, созданный с помощью AcxStreamCreate, позволит драйверу получать управляющие сигналы и изменения состояния, связанные с потоком. Однако ACXSTREAM не будет поддерживать потоковую передачу звуковых данных в ос или из нее. Драйвер, поддерживающий потоковую передачу аудиоданных, должен использовать AcxRtStreamCreate для создания ACXSTREAM с поддержкой потоковой передачи. Для конечной точки, которая создается из нескольких ACXCIRCUITs в нескольких драйверах, ACXCIRCUIT, на котором размещается пин-код потоковой передачи, создаст ACX RT Stream в то время как другие ACXCIRCUITs в конечной точке создают потоки ACX, отличные от RT.
Пример
Ниже показан пример создания потока.
//
// Init streaming callbacks.
//
ACX_STREAM_CALLBACKS streamCallbacks;
ACX_STREAM_CALLBACKS_INIT(&streamCallbacks);
streamCallbacks.EvtAcxStreamPrepareHardware = EvtStreamPrepareHardware;
streamCallbacks.EvtAcxStreamReleaseHardware = EvtStreamReleaseHardware;
streamCallbacks.EvtAcxStreamRun = EvtStreamRun;
streamCallbacks.EvtAcxStreamPause = EvtStreamPause;
streamCallbacks.EvtAcxStreamAssignDrmContentId = EvtStreamAssignDrmContentId;
status = AcxStreamInitAssignAcxStreamCallbacks(StreamInit, &streamCallbacks);
//
// Create the stream.
//
WDF_OBJECT_ATTRIBUTES attributes;
ACXSTREAM stream;
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&attributes, STREAM_CONTEXT);
attributes.EvtCleanupCallback = EvtStreamContextCleanup;
attributes.EvtDestroyCallback = EvtStreamDestroy;
status = AcxStreamCreate(Device, Circuit, &attributes, &StreamInit, &stream);
Требования ACX
Минимальная версия ACX: 1.0
Дополнительные сведения о версиях ACX см. в статье Обзор версий ACX.
Требования
Требование | Значение |
---|---|
Заголовок | acxstreams.h |
IRQL | PASSIVE_LEVEL |