KePulseEvent-Funktion (ntddk.h)
Die KePulseEvent ein Ereignisobjekt atomisch auf einen signalgesteuerten Zustand festlegt, versucht, so viele Wartezeiten wie möglich zu erfüllen, und setzt das Ereignisobjekt dann auf einen nicht signalgesteuerten Zustand zurück.
Syntax
LONG KePulseEvent(
[in, out] PRKEVENT Event,
[in] KPRIORITY Increment,
[in] BOOLEAN Wait
);
Parameter
[in, out] Event
Ein Zeiger auf ein Dispatcherobjekt vom Typ KEVENT.
[in] Increment
Gibt eine Verstärkung an, die auf die Priorität von Threads angewendet werden soll, die als Ergebnis des Pulsings des Ereignisses gelesen werden. In der Regel auf Null festgelegt, kann jedoch auf eine festgelegt werden.
[in] Wait
Gibt einen booleschen Wert an, der angibt, ob der Aufruf von KePulseEvent- sofort durch einen Aufruf eines der KeWait-Xxx- Routinen folgt. Wenn TRUE, folgt der KePulseEvent- Aufruf sofort einem Aufruf von KeWaitForMultipleObjects, KeWaitForMutexObjectoder KeWaitForSingleObject. Weitere Informationen finden Sie im folgenden Abschnitt "Hinweise".
Rückgabewert
Der vorherige Signalzustand des Ereignisobjekts.
Bemerkungen
Weitere Informationen zu Ereignisobjekten finden Sie unter Event Objects.
Die KePulseEvent Routine kann die IRQL vorübergehend auslösen. Wenn der parameter WaitFALSEist, stellt die Routine vor der Rückgabe die IRQL auf den ursprünglichen Wert zurück, den er am Anfang des Aufrufs hatte.
Wenn Wait = TRUE, gibt die Routine zurück, ohne die IRQL zu senken. In diesem Fall muss der KePulseEvent Aufruf sofort mit einem KeWaitXxx Anruf gefolgt werden. Durch Festlegen von Wait = TRUEkann der Aufrufer verhindern, dass zwischen dem KePulseEvent Aufruf und dem KeWaitXxx Aufruf ein unnötiger Kontextwechsel auftritt. Die KeWait-Xxx- Routine stellt den IRQL-Wert am Anfang des KePulseEvent- Aufrufs wieder her. Obwohl die IRQL Kontextwechsel zwischen den beiden Aufrufen deaktiviert, können diese Aufrufe nicht zuverlässig als Start- und Ende eines atomischen Vorgangs verwendet werden. Beispielsweise kann zwischen diesen beiden Aufrufen ein Thread, der gleichzeitig auf einem anderen Prozessor ausgeführt wird, den Status des Ereignisobjekts oder des Ziels der Wartezeit ändern.
Wenn der Aufrufer bei IRQL = DISPATCH_LEVEL oder in einem beliebigen Threadkontext ausgeführt wird, muss der Timeout Parameter KeWaitXxx- null sein.
Warnung
Wenn ein Thread, der auf Event wartet, zurzeit einen Kernel-APC ausführt, wird die Wartezeit dieses Threads nicht erfüllt, wenn KePulseEvent- aufgerufen wird. Nach Abschluss des Kernel-APC verbleibt der Thread im Wartezustand.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Ab Windows 2000 verfügbar. |
Zielplattform- | Universal |
Header- | ntddk.h (include Ntddk.h) |
Library | NtosKrnl.lib |
DLL- | NtosKrnl.exe |
IRQL- | <= DISPATCH_LEVEL |
DDI-Complianceregeln | HwStorPortProhibitedDIs(storport), IrqlKeDispatchLte(wdm) |