KeInitializeEvent-Funktion (wdm.h)

Die KeInitializeEvent-Routine initialisiert ein Ereignisobjekt als Synchronisierungsereignis (single waiter) oder Benachrichtigungstypereignis und legt es auf einen signalisierten oder nicht signalisierten Zustand fest.

Syntax

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

Parameter

[out] Event

Zeiger auf ein Ereignisobjekt, für das der Aufrufer den Speicher bereitstellt.

[in] Type

Gibt den Ereignistyp an, entweder NotificationEvent oder SyncEvent.

[in] State

Gibt den Anfangszustand des Ereignisses an. TRUE gibt einen signalierten Zustand an.

Rückgabewert

Keine

Bemerkungen

Der Speicher für ein Ereignisobjekt muss ansässig sein: In der Geräteerweiterung eines vom Treiber erstellten Geräteobjekts, in der Controllererweiterung eines vom Aufrufer zugewiesenen Treiber-Controllerobjekts oder in einem vom Aufrufer zugewiesenen nicht seitengebundenen Pool. Wenn Sie das Ereignis auf dem Stapel zuweisen, müssen Sie beim Aufrufen von KeWaitForSingleObject, KeWaitForMutexObject oder KeWaitForMultipleObjects einen KernelMode-Wert angeben. Während einer KernelMode-Wartezeit wird der Stapel, der das Ereignis enthält, nicht ausgelagert.

Treiber verwenden in der Regel ein NotificationEvent , um auf den Abschluss eines E/A-Vorgangs zu warten. Wenn ein Benachrichtigungsereignis auf den signalierten Zustand festgelegt ist, werden alle Threads, die darauf warten, dass das Ereignis auf den signalierten Zustand festgelegt wird, zur Ausführung berechtigt. Das Ereignis verbleibt im signalierten Zustand, bis ein Thread KeResetEvent oder KeClearEvent aufruft, um das Ereignis im nicht signalierten Zustand festzulegen.

Ein SynchronizationEvent wird auch als Autoreset - oder Autoclearing-Ereignis bezeichnet. Wenn ein solches Ereignis festgelegt wird, wird ein einzelner Wartethread zur Ausführung berechtigt. Der Kernel setzt das Ereignis automatisch auf den nicht signalierten Zustand zurück, wenn eine Wartezeit erfüllt ist. Ein Treiber kann ein Synchronisierungsereignis verwenden, um eine freigegebene Ressource zu schützen, die bei der Synchronisierung der Vorgänge mehrerer Threads verwendet wird. Synchronisierungsereignisse werden in einem typischen Treiber selten verwendet.

Weitere Informationen zu Ereignisobjekten finden Sie unter Ereignisobjekte.

Anforderungen

   
Unterstützte Mindestversion (Client) Ab Windows 2000 verfügbar.
Zielplattform Universell
Header wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Beliebige Ebene
DDI-Complianceregeln HwStorPortProhibitedDIs(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)

Weitere Informationen

KeClearEvent

KeReadStateEvent

KeResetEvent

KeSetEvent

KeWaitForMultipleObjects

KeWaitForSingleObject