Partager via


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)

Voir aussi

KeInitializeEvent

keReadStateEvent

KeResetEvent

keSetEvent

KeWaitForMultipleObjects

KeWaitForSingleObject