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 (beschrieben in Zusammenfassung der Frameworkobjekte), das dem angegebenen ACXCIRCUIT und seinem Stream zugeordnet ist.

Circuit

Der ACXCIRCUIT, dem dieser Stream zugeordnet wird.

Attributes

Zusätzliche Attribute, die mithilfe einer WDF_OBJECT_ATTRIBUTES definiert werden, die zum Festlegen der Werte des verschiedenen Objekts 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-Objekten.

Stream

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

Ein ACXSTREAM-Objekt stellt einen audiostream dar, der von einer Verbindung erstellt wird. Weitere Informationen finden Sie unter ACX – Zusammenfassung von ACX-Objekten.

Rückgabewert

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

Hinweise

Nachdem der ACXSTREAM erstellt wurde, kann der Treiber dem Stream mindestens ein ACX-Element hinzufügen. AcX-Elemente sind standardmäßig in der gleichen Reihenfolge der Assembly verbunden. Ein ACXSTREAM ist nur einem ACXCIRCUIT zugeordnet. ACX unterstützt zwei Arten von Streams: einfache ACX-Streamobjekte, die von Nicht-Streaming-Leitungen verwendet werden, und ACX RealTime(RT)-Streamobjekte, die von Streamingleitungen verwendet werden.

Der von AcxRtStreamCreate erstellte ACXSTREAM ermöglicht es dem Treiber, Steuersignale und Zustandsänderungen zu empfangen, die einem Stream zugeordnet sind. Der ACXSTREAM unterstützt auch das Streaming von Audiodaten zum oder vom Betriebssystem. Ein Treiber, der Das Streaming 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 erstellt wird, erstellt der ACXCIRCUIT, der den Streaming-Pin hostet, eine ACX RT-Stream während die anderen ACXCIRCUITs im Endpunkt ACX-Streams ohne RT erstellen würden.

Beispiel

Das Beispiel für die Rt-Streamerstellung ist unten dargestellt.

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

AcX-Mindestversion: 1.0

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

Anforderungen

Anforderung Wert
Header acxstreams.h
IRQL PASSIVE_LEVEL

Weitere Informationen