Partager via


KeSynchronizeExecution, fonction (wdm.h)

La routine KeSynchronizeExecution synchronise l’exécution de la routine spécifiée avec la routine de service d’interruption (ISR) affectée à un ensemble d’un ou plusieurs objets d’interruption.

Syntaxe

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

Paramètres

[in, out] Interrupt

Pointeur vers un ensemble d’objets d’interruption. L’appelant a obtenu ce pointeur à partir de la routine IoConnectInterrupt ou IoConnectInterruptEx .

[in] SynchronizeRoutine

Spécifie une routine SynchCritSection fournie par l’appelant dont l’exécution doit être synchronisée avec l’exécution de l’ISR affecté aux objets d’interruption.

[in, optional] SynchronizeContext

Pointeur vers une valeur de contexte fournie par l’appelant à passer à la routine SynchCritSection lorsqu’elle est appelée.

Valeur retournée

KeSynchronizeExecution retourne TRUE si l’opération réussit. Sinon, elle retourne FALSE.

Remarques

Lorsque cette routine est appelée, les opérations suivantes se produisent :

  1. L’IRQL est élevé à la valeur SynchronizeIrql spécifiée dans l’appel à IoConnectInterrupt ou IoConnectInterruptEx.
  2. L’accès à SynchronizeContext est synchronisé avec l’ISR attribué en acquérant le verrou de rotation de l’objet d’interruption associé (ou objet d’événement système, dans le cas d’un ISR qui s’exécute à PASSIVE_LEVEL).
  3. La routine SynchCritSection spécifiée est appelée avec la valeur SynchronizeContext comme paramètre.
Si l’ISR s’exécute sur DIRQL >= DISPATCH_LEVEL, la routine SynchCritSection s’exécute sur le même DIRQL et doit donc s’exécuter aussi brièvement que possible pour éviter de retarder d’autres tâches prioritaires.

Les appelants de KeSynchronizeExecution doivent s’exécuter à IRQL <= DIRQL, c’est-à-dire à un IRQL inférieur ou égal à la valeur de la valeur SynchronizeIrql spécifiée par l’appelant lors de l’inscription de son ISR auprès de IoConnectInterrupt ou IoConnectInterruptEx.

À compter de Windows 8, un pilote peut appeler KeSynchronizeExecution pour synchroniser l’exécution d’une routine SynchCritSection avec un ISR qui s’exécute à IRQL = PASSIVE_LEVEL. Dans les versions antérieures de Windows, KeSynchronizeExecution ne peut synchroniser l’exécution qu’avec un ISR qui s’exécute à IRQL >= DISPATCH_LEVEL. Pour plus d’informations, consultez Utilisation Passive-Level routines de service d’interruption.

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 <= DIRQL (voir la section Notes)

Voir aussi

IoConnectInterrupt

IoConnectInterruptEx