PSET_DMA_ENGINE_STATE fonction de rappel (hdaudio.h)
La routine SetDmaEngineState définit l’état d’un ou de plusieurs moteurs DMA à l’état En cours d’exécution, Arrêté, Suspendu ou Réinitialisé.
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_V2 ou 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 (reset)
- RunState (en cours d’exécution)
- StopState (arrêté)
[in] NumberOfHandles
Spécifie le nombre de handles dans le tableau de handles . Définissez ce paramètre sur une valeur différente de zéro.
[in] Handles
Pointeur vers un tableau de handles vers les moteurs DMA. Spécifiez une valeur non NULL pour ce paramètre.
Valeur retournée
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 de retour possibles status.
Code de retour | Description |
---|---|
|
Indique que l’un des handles n’est pas valide. |
|
Indique que l’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 à l’un des moteurs DMA. |
Remarques
Cette routine modifie l’état d’un ou de 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 tableau de handles identifient. Pour plus d’informations, consultez Synchronisation de deux flux ou plus.
Avant d’appeler cette routine, configurez chaque moteur DMA dans le tableau de handles :
- 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 Suspendu ou Arrêté :
- À partir d’un état En cours d’exécution ou de réinitialisation, l’état du flux peut passer directement à Suspendu ou Arrêté.
- À partir d’un état suspendu ou arrêté, l’état du flux peut passer directement à En cours d’exécution ou à Réinitialiser.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Desktop (Expérience utilisateur) |
En-tête | hdaudio.h (inclure Hdaudio.h) |
IRQL | <=DISPATCH_LEVEL |