acxRtStreamCreate 函式 (acxstreams.h)
AcxRtStreamCreate 會 建立由 OS 用來串流音訊數據的 ACX RTStream 音訊數據流。
語法
NTSTATUS AcxRtStreamCreate(
WDFDEVICE Device,
ACXCIRCUIT Circuit,
PWDF_OBJECT_ATTRIBUTES Attributes,
PACXSTREAM_INIT *Config,
ACXSTREAM *Stream
);
參數
Device
WDFDEVICE 物件 (描述於與指定 ACXCIRCUIT 及其數據流相關聯的 Framework 物件 摘要) 。
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) 串流線路所使用的數據流物件。
AcxRtStreamCreate 所建立的 ACXSTREAM 可讓驅動程式接收與數據流相關聯的控制訊號和狀態變更。 ACXSTREAM 也支援將音訊數據串流至OS或從作業系統進行串流處理。 支援串流音頻數據的驅動程序應該使用 AcxRtStreamCreate 來建立支援串流的 ACXSTREAM。
針對跨多個驅動程式從多個 ACXCIRCUIT 建立的端點,裝載串流針腳的 ACXCIRCUIT 會建立 ACX RT Stream,而端點中的其他 ACXCIRCUIT 則會建立非 RT 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);
//
// Init RT Streaming callbacks.
//
ACX_RT_STREAM_CALLBACKS rtCallbacks;
ACX_RT_STREAM_CALLBACKS_INIT(&rtCallbacks);
rtCallbacks.EvtAcxStreamGetHwLatency = EvtStreamGetHwLatency;
rtCallbacks.EvtAcxStreamAllocateRtPackets = EvtStreamAllocateRtPackets;
rtCallbacks.EvtAcxStreamFreeRtPackets = EvtStreamFreeRtPackets;
rtCallbacks.EvtAcxStreamSetRenderPacket = EvtStreamSetRenderPacket;
rtCallbacks.EvtAcxStreamGetCurrentPacket = EvtStreamGetCurrentPacket;
rtCallbacks.EvtAcxStreamGetPresentationPosition = EvtStreamGetPresentationPosition;
status = AcxStreamInitAssignAcxRtStreamCallbacks(StreamInit, &rtCallbacks);
//
// 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 = AcxRtStreamCreate(Device, Circuit, &attributes, &StreamInit, &stream);
ACX 需求
最小 ACX 版本: 1.0
如需 ACX 版本的詳細資訊,請參閱 ACX 版本概觀。
規格需求
需求 | 值 |
---|---|
標頭 | acxstreams.h |
IRQL | PASSIVE_LEVEL |