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 |