Partager via


Interface IInterruptSync (portcls.h)

L’interface IInterruptSync représente un objet de synchronisation d’interruption qui synchronise l’exécution d’une liste de routines de service d’interruption (ISR) avec des routines non-ISR. Le pilote système PortCls implémente cette interface et l’expose au pilote de l’adaptateur. Un pilote miniport obtient une référence à un IInterruptSync objet en appelant la fonction PortCls PcNewInterruptSync, qui crée un IInterruptSync objet qui se connecte à une ressource d’interruption. IInterruptSync hérite de l’interface IUnknown .

La méthode IInterruptSync ::RegisterServiceRoutine associe un ISR à un objet de synchronisation. Plusieurs ISR peuvent être associés à un seul objet de synchronisation. Lorsque l’interruption se produit, l’objet de synchronisation exécute les ISR dans la liste dans un ordre et une manière spécifiés en fonction du paramètre Mode de la fonction PcNewInterruptSync.

Une autre facette de IInterruptSync est sa capacité à synchroniser l’exécution des ISR avec d’autres routines qui ne sont pas des ISR. Une fois qu’une routine non-ISR est passée à IInterruptSync ::CallSynchronizedRoutine et commence à s’exécuter, l’exécution de tous les ISR inscrits avec l’objet de synchronisation est garantie d’être maintenue jusqu’à la fin de l’exécution de cette routine.

Les méthodes RegisterServiceRoutine et CallSynchronizedRoutine acceptent les pointeurs de fonction de type PINTERRUPTSYNCROUTINE, qui est défini comme suit :

  typedef NTSTATUS (*PINTERRUPTSYNCROUTINE)
  (
      IN  struct IInterruptSync *InterruptSync,
      IN  PVOID                  DynamicContext
  );

Le membre InterruptSync est un pointeur vers l’objet de synchronisation. Le membre DynamicContext contient une valeur de contexte qui est passée à la routine lorsqu’elle est appelée.

Pour plus d’informations, consultez Interrompre les objets de synchronisation.

Héritage

L’interface IInterruptSync hérite de l’interface IUnknown.

Méthodes

L’interface IInterruptSync utilise ces méthodes.

 
IInterruptSync ::CallSynchronizedRoutine

La méthode CallSynchronizedRoutine appelle une routine qui n’est pas une routine de service d’interruption (ISR), mais dont l’exécution doit être synchronisée avec les ISR.
IInterruptSync ::Connect

La méthode Connect connecte l’objet de synchronisation à l’interruption.
IInterruptSync ::D isconnect

La méthode Disconnect déconnecte l’objet de synchronisation de l’interruption.
IInterruptSync ::GetKInterrupt

La méthode GetKInterrupt obtient un objet d’interruption WDM à partir d’un objet de synchronisation de classe de port.
IInterruptSync ::RegisterServiceRoutine

La méthode RegisterServiceRoutine inscrit une routine de service d’interruption (ISR) qui doit être appelée lorsqu’une interruption se produit.

Configuration requise

Condition requise Valeur
Plateforme cible Windows
En-tête portcls.h