Freigeben über


AcxRtStreamCreate-Funktion (acxstreams.h)

AcxRtStreamCreate erstellt einen ACX RTStream-Audiostream, der vom Betriebssystem zum Streamen von Audiodaten verwendet wird.

Syntax

NTSTATUS AcxRtStreamCreate(
  WDFDEVICE              Device,
  ACXCIRCUIT             Circuit,
  PWDF_OBJECT_ATTRIBUTES Attributes,
  PACXSTREAM_INIT        *Config,
  ACXSTREAM              *Stream
);

Parameter

Device

Ein WDFDEVICE-Objekt (in Summary of Framework Objects) beschrieben, das dem angegebenen ACXCIRCUIT und seinem Datenstrom zugeordnet ist.

Circuit

Der ACXCIRCUIT, dem dieser Datenstrom zugeordnet wird.

Attributes

Zusätzliche Attribute, die mithilfe einer WDF_OBJECT_ATTRIBUTES definiert werden, die zum Festlegen der Werte der verschiedenen Objekte verwendet werden: Bereinigen und Zerstören von Rückrufen, Kontexttyp und Angeben des übergeordneten Objekts.

Config

Eine ACXSTREAM_INIT Struktur, die die Initialisierungsparameter des Datenstroms definiert. Weitere Informationen zu ACX-Objekten finden Sie unter ACX – Zusammenfassung von ACX Objects.

Stream

Ein Zeiger auf eine Position, die ein Handle für das neue ACXSTREAM-Objekt empfängt.

Ein ACXSTREAM -Objekt stellt einen Von einem Schaltkreis erstellten Audiodatenstrom dar. Weitere Informationen finden Sie unter ACX – Zusammenfassung von ACX Objects.

Rückgabewert

Gibt STATUS_SUCCESS zurück, wenn der Anruf erfolgreich war. Andernfalls wird ein entsprechender Fehlercode zurückgegeben. Weitere Informationen finden Sie unter Verwenden von NTSTATUS-Werten.

Bemerkungen

Nachdem der ACXSTREAM erstellt wurde, kann der Treiber dem Datenstrom ein oder mehrere ACX-Elemente hinzufügen. AcX-Elemente sind standardmäßig in derselben Assemblyreihenfolge verbunden. Ein ACXSTREAM ist nur einem ACXCIRCUIT zugeordnet. ACX unterstützt zwei Arten von Datenströmen: grundlegende ACX-Streamobjekte, die von Nicht-Streaming-Schaltkreisen verwendet werden, und ACX RealTime (RT)-Streamobjekte, die von Streamingschaltungen verwendet werden.

Der von AcxRtStreamCreate erstellte ACXSTREAM ermöglicht es dem Treiber, Steuerungssignale und Zustandsänderungen zu empfangen, die einem Datenstrom zugeordnet sind. AcXSTREAM unterstützt auch das Streamen von Audiodaten an oder vom Betriebssystem. Ein Treiber, der das Streamen von Audiodaten unterstützt, sollte AcxRtStreamCreate verwenden, um einen ACXSTREAM mit Unterstützung für Streaming zu erstellen.

Für einen Endpunkt, der aus mehreren ACXCIRCUITs über mehrere Treiber hinweg hergestellt wird, erstellt der ACXCIRCUIT, der den Streaming-Pin hostt, einen ACX RT-Stream, während die anderen ACXCIRCUITs im Endpunkt nicht RT ACX Streams erstellen würden.

Beispiel

Die Rt-Datenstromerstellung wird unten gezeigt.

    //
    // 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-Anforderungen

Mindestens ACX-Version: 1.0

Weitere Informationen zu ACX-Versionen finden Sie unter ACX-Versionsübersicht.

Anforderungen

Anforderung Wert
Header- acxstreams.h
IRQL- PASSIVE_LEVEL

Siehe auch