Compartir a través de


EVT_ACX_STREAM_RELEASE_HARDWARE función de devolución de llamada (acxstreams.h)

El evento EvtAcxStreamReleaseHardware indica al controlador que libere cualquier hardware asignado para la secuencia y coloque la secuencia en estado Stop.

Sintaxis

EVT_ACX_STREAM_RELEASE_HARDWARE EvtAcxStreamReleaseHardware;

NTSTATUS EvtAcxStreamReleaseHardware(
  ACXSTREAM Stream
)
{...}

Parámetros

Stream

Un objeto ACXSTREAM representa una secuencia de audio creada por un circuito. La secuencia se compone de una lista de elementos creados en función de los elementos del circuito primario. 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 Using NTSTATUS Values.

Observaciones

AcxStream admite diferentes estados. Estos estados indican cuándo fluye el audio (estado RUN), el audio no fluye, pero el hardware de audio está preparado (estado PAUSE) o el audio no fluye y el hardware de audio no está preparado (estado STOP).

El evento EvtAcxStreamReleaseHardware realizará la transición del estado de secuencia desde el estado Pausar al estado Stop. El controlador debe liberar los recursos de hardware asignados para el streaming en este evento, como los motores DMA. Una vez que la secuencia está en estado Stop, el controlador puede recibir el evento EvtAcxStreamPrepareHardware para realizar la transición al estado Pause o el objeto ACXSTREAM se puede destruir.

Los eventos ACX son análogos a los estados KS, tal como se describe en esta tabla.

Estado de inicio Estado final Evento de controlador ACX llamado Notas
PARAR ADQUIRIR PrepareHardware El controlador realiza asignaciones de hardware y preparativos
ADQUIRIR PAUSA (Sin llamada)
PAUSA CORRER Correr
CORRER PAUSA Pausa
PAUSA ADQUIRIR (Sin llamada)
ADQUIRIR PARAR ReleaseHardware El controlador libera asignaciones de hardware

Cuando se completa el trabajo con la secuencia, se llama a EvtAcxStreamFreeRtPackets después de EvtAcxStreamReleaseHardware. Esto permite que la fase de hardware de versión termine de desasignar el ancho de banda, liberar recursos DMA y cualquier otra limpieza asociada, para que se produzcan antes de que se liberen los búferes rt asignados.

Limpieza de memoria

La eliminación de los recursos de la secuencia se puede realizar en la limpieza del contexto de flujo del controlador (no destruir). Nunca coloque la eliminación de nada que se comparta en el contexto de un objeto destruye la devolución de llamada. Esta guía se aplica a todos los objetos ACX.

La devolución de llamada de destrucción se invoca después de que se haya perdido la última referencia, cuando se desconoce.

Se llama a la devolución de llamada de limpieza de la secuencia cuando se cierra el identificador. Una excepción a esto es cuando el controlador creó la secuencia en su devolución de llamada. Si ACX no pudo agregar esta secuencia a su puente de flujo justo antes de volver de la operación stream-create, la secuencia se cancela asincrónica y el subproceso actual devuelve un error al cliente create-stream. La secuencia no debe tener asignaciones de mem asignadas en este momento.

Ejemplo

A continuación se muestra el uso de ejemplo.

    ACX_STREAM_CALLBACKS streamCallbacks;
    ACX_STREAM_CALLBACKS_INIT(&streamCallbacks);
    streamCallbacks.EvtAcxStreamReleaseHardware = EvtStreamReleaseHardware;
    ...
    status = AcxStreamInitAssignAcxStreamCallbacks(StreamInit, &streamCallbacks);
PAGED_CODE_SEG
NTSTATUS
EvtStreamReleaseHardware(
    _In_ ACXSTREAM Stream
    )
{
    PSTREAM_CONTEXT ctx;
    NTSTATUS        status;

    PAGED_CODE();

    ctx = GetStreamContext(Stream);

    status = ReleaseStreamHardware(Stream);

    ctx->StreamState = AcxStreamStateStop;

    return status;
}

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
encabezado de acxstreams.h
irQL PASSIVE_LEVEL

Consulte también