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 |