AcxRtStreamCreate 函式 (acxstreams.h)
AcxRtStreamCreate 會建立 OS 用來串流音訊數據的 ACX RTStream 音訊串流。
語法
NTSTATUS AcxRtStreamCreate(
WDFDEVICE Device,
ACXCIRCUIT Circuit,
PWDF_OBJECT_ATTRIBUTES Attributes,
PACXSTREAM_INIT *Config,
ACXSTREAM *Stream
);
參數
Device
與指定 ACXCIRCUIT 及其數據流相關聯的 WDFDEVICE 物件(如 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 |