Fonction KePulseEvent (ntddk.h)
La routine KePulseEvent définit atomiquement un objet d’événement à un état signalé, tente de satisfaire autant d’attentes que possible, puis réinitialise l’objet événement à un état non signalé.
Syntaxe
LONG KePulseEvent(
[in, out] PRKEVENT Event,
[in] KPRIORITY Increment,
[in] BOOLEAN Wait
);
Paramètres
[in, out] Event
Pointeur vers un objet de répartiteur de type KEVENT.
[in] Increment
Spécifie un boost à appliquer à la priorité des threads qui sont préparés à la suite de la pulsation de l’événement. Généralement défini sur zéro, mais peut être défini sur un.
[in] Wait
Spécifie une valeur booléenne qui indique si l’appel à KePulseEvent sera immédiatement suivi d’un appel à l’une des routines KeWaitXxx . Si la valeur est TRUE, l’appel KePulseEvent est immédiatement suivi d’un appel à KeWaitForMultipleObjects, KeWaitForMutexObject ou KeWaitForSingleObject. Pour plus d'informations, consultez la section Notes qui suit.
Valeur retournée
État du signal précédent de l’objet événement.
Remarques
Pour plus d’informations sur les objets d’événements, consultez Event Objects.
La routine KePulseEvent peut déclencher temporairement l’IRQL. Si le paramètre Wait a la valeur FALSE, la routine, avant qu’elle ne retourne, restaure l’IRQL à la valeur d’origine qu’elle avait au début de l’appel.
Si l’argument Wait = TRUE est attendu, la routine retourne sans abaisser l’IRQL. Dans ce cas, l’appel KePulseEvent doit être immédiatement suivi d’un appel KeWaitXxx . En définissant Wait = TRUE, l’appelant peut empêcher un changement de contexte inutile de se produire entre l’appel KePulseEvent et l’appel KeWaitXxx . La routine KeWaitXxx , avant qu’elle ne retourne, restaure l’IRQL à sa valeur d’origine au début de l’appel KePulseEvent . Bien que l’IRQL désactive les commutateurs de contexte entre les deux appels, ces appels ne peuvent pas être utilisés de manière fiable comme début et fin d’une opération atomique. Par exemple, entre ces deux appels, un thread qui s’exécute en même temps sur un autre processeur peut modifier l’état de l’objet d’événement ou de la cible de l’attente.
Si l’appelant s’exécute à IRQL = DISPATCH_LEVEL ou dans un contexte de thread arbitraire, le paramètre Timeout de KeWaitXxx doit être égal à zéro.
Avertissement
Si un thread en attente d’événement exécute actuellement un APC du noyau, lorsque KePulseEvent est appelé, l’attente de ce thread n’est pas satisfaite. Une fois l’APC du noyau terminé, le thread reste à l’état d’attente.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible à partir de Windows 2000. |
Plateforme cible | Universal |
En-tête | ntddk.h (inclure Ntddk.h) |
Bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |
Règles de conformité DDI | HwStorPortProhibitedDDIs(storport),IrqlKeDispatchLte(wdm) |
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour