Compartir a través de


PSET_DMA_ENGINE_STATE función de devolución de llamada (hdaudio.h)

La rutina SetDmaEngineState establece el estado de uno o varios motores DMA en el estado Running, Stopped, Paused o Reset.

El tipo de puntero de función de un SetDmaEngineState rutina se define de la manera siguiente.

Sintaxis

PSET_DMA_ENGINE_STATE PsetDmaEngineState;

NTSTATUS PsetDmaEngineState(
  [in] PVOID _context,
  [in] HDAUDIO_STREAM_STATE StreamState,
  [in] ULONG NumberOfHandles,
  [in] PHANDLE Handles
)
{...}

Parámetros

[in] _context

Especifica el valor de contexto del miembro Context de la estructura HDAUDIO_BUS_INTERFACE, HDAUDIO_BUS_INTERFACE_V2o HDAUDIO_BUS_INTERFACE_BDL.

[in] StreamState

Especifica el nuevo estado de la secuencia. Establezca este parámetro en uno de los siguientes valores de enumeración de HDAUDIO_STREAM_STATE:

  • PauseState (en pausa)
  • ResetState (restablecimiento)
  • runState (en ejecución)
  • StopState (detenido)
En la implementación actual, PauseState y StopState representan el mismo estado de hardware.

[in] NumberOfHandles

Especifica el número de identificadores de la matriz . Establezca este parámetro en un valor distinto de cero.

[in] Handles

Puntero a una matriz de identificadores a los motores DMA. Especifique un valor que no seaNULL para este parámetro.

Valor devuelto

setDmaEngineState devuelve STATUS_SUCCESS si la llamada cambia correctamente los estados de los motores DMA. De lo contrario, la rutina devuelve un código de error adecuado. En la tabla siguiente se muestran algunos de los posibles códigos de estado de retorno.

Código devuelto Descripción
STATUS_INVALID_HANDLE
Indica que uno de los identificadores no es válido.
STATUS_INVALID_PARAMETER
Indica que uno de los valores de parámetro es incorrecto (valor de parámetro no válido o puntero incorrecto).
STATUS_INVALID_DEVICE_REQUEST
Indica que actualmente no se asigna ningún búfer para uno de los motores DMA.

Observaciones

Esta rutina cambia el estado de uno o varios motores DMA al estado que especifica el parámetro streamState . La rutina sincroniza las transiciones de estado de todos los motores DMA que controla en el controla matriz. Para obtener más información, consulte Sincronización de dos o más secuencias.

Antes de llamar a esta rutina, configure cada motor DMA en el controla matriz:

  • Si usa la versión HDAUDIO_BUS_INTERFACE de hd Audio DDI, llame a AllocateDmaBuffer para configurar el motor DMA.
  • Si usa la versión HDAUDIO_BUS_INTERFACE_BDL de DDI, llame a SetupDmaEngineWithBdl para configurar el motor DMA.
Si actualmente no se asigna ningún búfer DMA para cualquier motor DMA en el controla matriz, un intento de cambiar la secuencia a cualquier estado distinto de Reset hace que la llamada SetDmaEngineState produzca un error y devuelva el código de error STATUS_INVALID_DEVICE_REQUEST.

El estado de la secuencia no puede realizar la transición directamente entre Running y Reset. En su lugar, la secuencia debe pasar primero a través de un estado intermedio de Pausado o Detenido:

  • Desde un estado En ejecución o Restablecer, el estado de la secuencia puede cambiar directamente a Pausado o Detenido.
  • Desde un estado en pausa o detenido, el estado de la secuencia puede cambiar directamente a En ejecución o Restablecer.
Un controlador de audio WDM llama a esta rutina durante una llamada a su método setState. Por ejemplo, vea IMiniportWaveCyclicStream::SetState.

Requisitos

Requisito Valor
de la plataforma de destino de Escritorio
encabezado de hdaudio.h (incluya Hdaudio.h)
irQL <=DISPATCH_LEVEL

Consulte también

AllocateDmaBuffer

HDAUDIO_BUS_INTERFACE

HDAUDIO_BUS_INTERFACE_BDL

HDAUDIO_BUS_INTERFACE_V2

IMiniportWaveCyclicStream::SetState

SetupDmaEngineWithBdl