KePulseEvent, fonction (ntddk.h)
Le KePulseEvent définit de façon atomique un objet événement à un état signalé, tente de satisfaire autant d’attentes que possible, puis réinitialise l’objet d’é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 répartiteur de type KEVENT.
[in] Increment
Spécifie un boost à appliquer à la priorité des threads qui sont prêts en raison de la pulsation de l’événement. En règle générale, 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 TRUE, l’appel KePulseEvent est immédiatement suivi d’un appel à KeWaitForMultipleObjects, KeWaitForMutexObjectou KeWaitForSingleObject. Pour plus d’informations, consultez la section Remarques suivante.
Valeur de retour
État du signal précédent de l’objet d’é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 est FALSE, la routine, avant de retourner, restaure le runtime d’intégration sur la valeur d’origine qu’il avait au début de l’appel.
Si Wait = TRUE, la routine retourne sans réduire le runtime d’intégration. Dans ce cas, l’appel kePulseEvent doit être immédiatement suivi d’un appel KeWaitXxx. En définissant 'attente = TRUE, l’appelant peut empêcher un commutateur de contexte inutile entre l’appel KePulseEvent et l’appel KeWaitXxx. La routine KeWaitXxx, avant de retourner, restaure l’IRQL sur 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 é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 pour KeWaitXxx doit être égal à zéro.
Avertissement
Si un thread en attente de 'événement exécute actuellement un NOYAU APC, quand KePulseEvent est appelé, l’attente de ce thread n’est pas satisfaite. Une fois l’APC du noyau terminé, le thread reste dans l’état d’attente.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Disponible à partir de Windows 2000. |
plateforme cible | Universel |
d’en-tête | ntddk.h (include Ntddk.h) |
bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |
règles de conformité DDI | HwStorPortProhibitedDDIs(storport), IrqlKeDispatchLte(wdm) |