Freigeben über


KeSynchronizeExecution-Funktion (wdm.h)

Die KeSynchronizeExecution Routine synchronisiert die Ausführung der angegebenen Routine mit der Unterbrechungsdienstroutine (Interrupt Service Routine, ISR), die einer Gruppe 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 Unterbrechungsobjekten 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.

Bemerkungen

Wenn diese Routine aufgerufen wird, tritt Folgendes auf:

  1. Die IRQL wird auf den im Aufruf IoConnectInterrupt oder IoConnectInterruptExangegebenen SynchronizeIrql-Wert ausgelöst.
  2. Der Zugriff auf SynchronizeContext- wird mit dem zugewiesenen ISR synchronisiert, indem die zugeordnete Unterbrechungsobjekt-Drehungssperre abgerufen wird (oder bei einem ISR, der bei PASSIVE_LEVEL ausgeführt wird).
  3. Die angegebene SynchCritSection- Routine wird mit dem SynchronizeContext Wert als Parameter aufgerufen.
Wenn der ISR bei DIRQL >= DISPATCH_LEVEL ausgeführt wird, wird die SynchCritSection- Routine mit derselben DIRQL ausgeführt und muss daher so kurz wie möglich ausgeführt werden, um zu vermeiden, dass andere Vorgänge mit hoher Priorität verzögert werden.

Aufrufer von KeSynchronizeExecution- müssen bei IRQL-<= DIRQL ausgeführt werden; d. h. bei einem IRQL, der kleiner oder gleich dem Wert des SynchronizeIrql- werts ist, den der Aufrufer beim Registrieren seines ISR mit IoConnectInterrupt oder IoConnectInterruptExangegeben hat.

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

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Ab Windows 2000 verfügbar.
Zielplattform- Universal
Header- wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- <= DIRQL (siehe Abschnitt "Hinweise")

Siehe auch

IoConnectInterrupt-

IoConnectInterruptEx-