Freigeben über


KeSynchronizeExecution-Funktion (wdm.h)

Die KeSynchronizeExecution-Routine synchronisiert die Ausführung der angegebenen Routine mit der Interruptdienstroutine (ISR), die einem Satz von mindestens einem Interruptobjekt zugewiesen ist.

Syntax

BOOLEAN KeSynchronizeExecution(
  [in, out]      PKINTERRUPT            Interrupt,
  [in]           PKSYNCHRONIZE_ROUTINE  SynchronizeRoutine,
  [in, optional] __drv_aliasesMem PVOID SynchronizeContext
);

Parameter

[in, out] Interrupt

Ein Zeiger auf eine Gruppe von Interruptobjekten. Der Aufrufer hat diesen Zeiger aus der IoConnectInterrupt - oder IoConnectInterruptEx-Routine abgerufen.

[in] SynchronizeRoutine

Gibt eine vom Aufrufer bereitgestellte SynchCritSection-Routine an, deren Ausführung mit der Ausführung des ISR synchronisiert werden soll, der den Interruptobjekten zugewiesen ist.

[in, optional] SynchronizeContext

Ein Zeiger auf einen vom Aufrufer bereitgestellten Kontextwert, der beim Aufruf an die SynchCritSection-Routine übergeben werden soll.

Rückgabewert

KeSynchronizeExecution gibt TRUE zurück, wenn der Vorgang erfolgreich ist. Andernfalls wird FALSE zurückgegeben.

Hinweise

Wenn diese Routine aufgerufen wird, tritt Folgendes auf:

  1. Der IRQL wird auf den SynchronizeIrql-Wert ausgelöst, der im Aufruf von IoConnectInterrupt oder IoConnectInterruptEx angegeben ist.
  2. Der Zugriff auf SynchronizeContext wird mit dem zugewiesenen ISR synchronisiert, indem die zugehörige Interruptobjekt-Spinsperre (oder das Systemereignisobjekt, im Fall eines ISR, der bei PASSIVE_LEVEL ausgeführt wird) abgerufen wird.
  3. Die angegebene SynchCritSection-Routine wird mit dem Wert SynchronizeContext als Parameter aufgerufen.
Wenn der ISR bei DIRQL >= DISPATCH_LEVEL ausgeführt wird, wird die SynchCritSection-Routine mit demselben DIRQL ausgeführt und muss daher so kurz wie möglich ausgeführt werden, um zu vermeiden, dass andere Aufgaben mit hoher Priorität verzögert werden.

Aufrufer von KeSynchronizeExecution müssen unter IRQL <= DIRQL ausgeführt werden, d. h. in einer IRQL, die kleiner oder gleich dem Wert des SynchronizeIrql-Werts ist, den der Aufrufer bei der Registrierung seiner ISR bei IoConnectInterrupt oder IoConnectInterruptEx angegeben hat.

Ab Windows 8 kann ein Treiber KeSynchronizeExecution aufrufen, um die Ausführung einer SynchCritSection-Routine mit einem ISR zu synchronisieren, der unter IRQL = PASSIVE_LEVEL ausgeführt wird. In früheren Versionen von Windows kann KeSynchronizeExecution die Ausführung nur mit einem ISR synchronisieren, der unter IRQL >= DISPATCH_LEVEL ausgeführt wird. Weitere Informationen finden Sie unter Verwenden Passive-Level Interruptdienstroutinen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar ab Windows 2000.
Zielplattform Universell
Header wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DIRQL (siehe Abschnitt Hinweise)

Weitere Informationen

IoConnectInterrupt

IoConnectInterruptEx