Partager via


KeInitializeEvent, fonction (wdm.h)

La routine KeInitializeEvent initialise un objet événement en tant qu’événement de synchronisation (serveur unique) ou d’événement de type notification et le définit sur un état signalé ou non signalé.

Syntaxe

void KeInitializeEvent(
  [out] PRKEVENT   Event,
  [in]  EVENT_TYPE Type,
  [in]  BOOLEAN    State
);

Paramètres

[out] Event

Pointeur vers un objet d’événement, pour lequel l’appelant fournit le stockage.

[in] Type

Spécifie le type d’événement, NotificationEvent ou SynchronizationEvent.

[in] State

Spécifie l’état initial de l’événement. TRUE indique un état signalé.

Valeur de retour

None

Remarques

Le stockage d’un objet d’événement doit être résident : dans l’extension de périphérique d’un objet de périphérique créé par un pilote, dans l’extension de contrôleur d’un objet contrôleur créé par un pilote ou dans un pool non paginé alloué par l’appelant. Si vous allouez l’événement sur la pile, vous devez spécifier une attente KernelMode lors de l’appel de KeWaitForSingleObject, KeWaitForMutexObject ou KeWaitForMultipleObjects. Pendant une attente KernelMode , la pile contenant l’événement ne sera pas paginée.

Les pilotes utilisent généralement notificationEvent pour attendre la fin d’une opération d’E/S. Lorsqu’un événement de notification est défini sur l’état signalé, tous les threads qui attendaient que l’événement soit défini sur l’état signalé deviennent éligibles à l’exécution. L’événement reste à l’état signalé jusqu’à ce qu’un thread appelle KeResetEvent ou KeClearEvent pour définir l’événement dans l’état non signalé.

Un objet SynchronizationEvent est également appelé événement de création automatique ou de contrôle automatique . Lorsqu’un tel événement est défini, un seul thread en attente devient éligible à l’exécution. Le noyau réinitialise automatiquement l’événement à l’état non signalé chaque fois qu’une attente est satisfaite. Un pilote peut utiliser un événement de synchronisation pour protéger une ressource partagée utilisée dans la synchronisation des opérations de plusieurs threads.

Pour plus d’informations sur les objets d’événement, consultez Objets d’événement.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible à partir de Windows 2000.
Plateforme cible Universal
En-tête wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL N’importe quel niveau
Règles de conformité DDI HwStorPortProhibitedDDIs(storport), IoAllocateIrpSignalEventInCompletion(wdm), IoAllocateIrpSignalEventInCompletion2(wdm), IoAllocateIrpSignalEventInCompletion3(wdm), IoAllocateIrpSignalEventInCompletionTimeout(wdm), IoBuildDeviceControlWait(wdm), IoBuildDeviceControlWaitTimeout(wdm), IoBuildDeviceIoControlSetEvent(wdm), IoBuildFsdIrpSignalEventInCompletion(wdm), IoBuildFsdIrpSignalEventInCompletion2(wdm), IoBuildFsdIrpSignalEventInCompletion3(wdm), IoBuildFsdIrpSignalEventInCompletionTimeout(wdm), IoBuildSynchronousFsdRequestWait(wdm), IoBuildSynchronousFsdRequestWaitTimeout(wdm), PendedCompletedRequest(wdm), PendedCompletedRequestEx(wdm), SignalEventInCompletion(wdm), SignalEventInCompletion2(wdm), SignalEventInCompletion3(wdm), StartDeviceWait(wdm), StartDeviceWait2(wdm)

Voir aussi

KeClearEvent

KeReadStateEvent

KeResetEvent

KeSetEvent

KeWaitForMultipleObjects

KeWaitForSingleObject