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 de retour

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

Remarques

Lorsque cette routine est appelée, les éléments suivants se produisent :

  1. L’IRQL est déclenché vers la valeur SynchronIrql spécifiée dans l’appel à IoConnectInterrupt ou IoConnectInterruptEx.
  2. L’accès à SynchronizeContext est synchronisé avec l’ISR affecté en acquérant le verrou de rotation d’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 SyncContext comme paramètre.
Si l’ISR s’exécute sur DIRQL >= DISPATCH_LEVEL, la routine SynchCritSection s’exécute au même DIRQL et doit donc s’exécuter aussi brièvement que possible pour éviter de retarder d’autres tâches à priorité élevée.

Les appelants de KeSynchronizeExecution doivent être en cours d’exécution à IRQL <= DIRQL ; autrement dit, à un IRQL inférieur ou égal à la valeur de la valeur SyncIrql spécifiée par l’appelant lorsqu’il a inscrit son ISR auprès d’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 peut synchroniser l’exécution uniquement 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

   
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 Remarques)

Voir aussi

IoConnectInterrupt

IoConnectInterruptEx