Share via


Función AcxRtStreamCreate (acxstreams.h)

AcxRtStreamCreate crea una secuencia de audio ACX RTStream que usa el sistema operativo para transmitir datos de audio.

Sintaxis

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

Parámetros

Device

Objeto WDFDEVICE (descrito en Resumen de objetos de marco) asociado al ACXCIRCUIT especificado y su secuencia.

Circuit

ACXCIRCUIT al que se asociará esta secuencia.

Attributes

Atributos adicionales definidos mediante un WDF_OBJECT_ATTRIBUTES que se usan para establecer los distintos valores del objeto: limpieza y destrucción de devoluciones de llamada, tipo de contexto y para especificar su objeto primario.

Config

Estructura ACXSTREAM_INIT que define los parámetros de inicialización de la secuencia. Para obtener más información sobre los objetos ACX, vea ACX : resumen de objetos ACX.

Stream

Puntero a una ubicación que recibe un identificador para el nuevo objeto ACXSTREAM.

Un objeto ACXSTREAM representa una secuencia de audio creada por un circuito. Para obtener más información, vea ACX : resumen de objetos ACX.

Valor devuelto

Devuelve STATUS_SUCCESS si la llamada se realizó correctamente. De lo contrario, devuelve un código de error adecuado. Para obtener más información, vea Uso de valores NTSTATUS.

Comentarios

Una vez creado ACXSTREAM, el controlador puede agregar uno o varios elementos ACX a la secuencia. De forma predeterminada, los elementos ACX están conectados en el mismo orden de ensamblado. Un ACXSTREAM está asociado a solo un ACXCIRCUIT. ACX admite dos tipos de secuencias: objetos básicos de secuencia de ACX usados por circuitos que no son de streaming y objetos de flujo de ACX RealTime (RT) usados por circuitos de streaming.

El ACXSTREAM creado por AcxRtStreamCreate permitirá al controlador recibir señales de control y cambios de estado asociados a una secuencia. ACXSTREAM también admitirá la transmisión de datos de audio hacia o desde el sistema operativo. Un controlador que admita datos de audio de streaming debe usar AcxRtStreamCreate para crear un ACXSTREAM compatible con el streaming.

Para un punto de conexión que se realiza a partir de varios ACXCIRCUITs en varios controladores, el ACXCIRCUIT que hospeda el pin de streaming crearía una Stream ACX RT mientras que los demás ACXCIRCUITs del punto de conexión crearían secuencias ACX que no son de RT.

Ejemplo

A continuación se muestra el ejemplo de creación de secuencias 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);

Requisitos de ACX

Versión mínima de ACX: 1.0

Para obtener más información sobre las versiones de ACX, consulte Introducción a la versión de ACX.

Requisitos

Requisito Valor
Header acxstreams.h
IRQL PASSIVE_LEVEL

Consulte también