共用方式為


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

另請參閱