PSET_DMA_ENGINE_STATE fonction de rappel (hdaudio.h)
La routine SetDmaEngineState définit l’état d’un ou plusieurs moteurs DMA à l’état En cours d’exécution, Arrêté, Suspendu ou Réinitialiser.
Le type de pointeur de fonction pour une routine SetDmaEngineState est défini comme suit.
Syntaxe
PSET_DMA_ENGINE_STATE PsetDmaEngineState;
NTSTATUS PsetDmaEngineState(
[in] PVOID _context,
[in] HDAUDIO_STREAM_STATE StreamState,
[in] ULONG NumberOfHandles,
[in] PHANDLE Handles
)
{...}
Paramètres
[in] _context
Spécifie la valeur de contexte du membre Context de la structure HDAUDIO_BUS_INTERFACE, HDAUDIO_BUS_INTERFACE_V2ou HDAUDIO_BUS_INTERFACE_BDL.
[in] StreamState
Spécifie le nouvel état du flux. Définissez ce paramètre sur l’une des valeurs d’énumération HDAUDIO_STREAM_STATE suivantes :
- PauseState (suspendu)
- ResetState (réinitialiser)
- RunState (en cours d’exécution)
- StopState (arrêté)
[in] NumberOfHandles
Spécifie le nombre de handles dans le handles tableau. Définissez ce paramètre sur une valeur différente de zéro.
[in] Handles
Pointeur vers un tableau de handles vers des moteurs DMA. Spécifiez une valeur deNULL non pour ce paramètre.
Valeur de retour
SetDmaEngineState retourne STATUS_SUCCESS si l’appel réussit à modifier les états des moteurs DMA. Sinon, la routine retourne un code d’erreur approprié. Le tableau suivant présente certains des codes d’état de retour possibles.
Retourner le code | Description |
---|---|
|
Indique qu’un des handles n’est pas valide. |
|
Indique qu’une des valeurs de paramètre est incorrecte (valeur de paramètre non valide ou pointeur incorrect). |
|
Indique qu’aucune mémoire tampon n’est actuellement allouée pour l’un des moteurs DMA. |
Remarques
Cette routine modifie l’état d’un ou plusieurs moteurs DMA à l’état spécifié par le paramètre streamState. La routine synchronise les transitions d’état de tous les moteurs DMA que les handles du gèrent tableau identifient. Pour plus d’informations, consultez synchronisation de deux flux ou plus.
Avant d’appeler cette routine, configurez chaque moteur DMA dans le gère tableau :
- Si vous utilisez la version HDAUDIO_BUS_INTERFACE de HD Audio DDI, appelez AllocateDmaBuffer pour configurer le moteur DMA.
- Si vous utilisez la version HDAUDIO_BUS_INTERFACE_BDL de la DDI, appelez SetupDmaEngineWithBdl pour configurer le moteur DMA.
L’état du flux ne peut pas passer directement entre l’exécution et la réinitialisation. Au lieu de cela, le flux doit d’abord passer par un état intermédiaire de Pause ou Arrêté :
- À partir d’un état d’exécution ou de réinitialisation, l’état du flux peut passer directement à l’état suspendu ou arrêté.
- À partir d’un état suspendu ou arrêté, l’état du flux peut passer directement à l’état En cours d’exécution ou de réinitialisation.
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Bureau |
d’en-tête | hdaudio.h (include Hdaudio.h) |
IRQL | <=DISPATCH_LEVEL |