WdfInterruptSynchronize, fonction (wdfinterrupt.h)

[S’applique à KMDF et UMDF]

La méthode WdfInterruptSynchronize exécute une fonction de rappel spécifiée au niveau du DIRQL de l’appareil tout en tenant le verrou de rotation d’un objet d’interruption.

Pour les objets d’interruption de niveau passif, cette méthode exécute une fonction de rappel spécifiée au niveau passif tout en conservant le verrou d’interruption de niveau passif d’un objet d’interruption.

Syntaxe

BOOLEAN WdfInterruptSynchronize(
  [in] WDFINTERRUPT                  Interrupt,
  [in] PFN_WDF_INTERRUPT_SYNCHRONIZE Callback,
  [in] WDFCONTEXT                    Context
);

Paramètres

[in] Interrupt

Handle pour un objet d’interruption de framework.

[in] Callback

Pointeur vers une fonction de rappel EvtInterruptSynchronize .

[in] Context

Pointeur non typé vers les informations fournies par le pilote que le framework transmet à la fonction de rappel EvtInterruptSynchronize .

Valeur retournée

WdfInterruptSynchronize renvoie la valeur booléenne status que la fonction de rappel EvtInterruptSynchronize retourne.

Un bogue case activée se produit si le pilote fournit un handle d’objet non valide.

Remarques

Si vous souhaitez que votre pilote exécute du code qui doit s’exécuter sans être préempté et que la maintenance des interruptions de périphérique soit effectivement désactivée, vous devez placer ce code dans une fonction de rappel EvtInterruptSynchronize . Pour planifier l’exécution de la fonction de rappel, votre pilote doit appeler WdfInterruptSynchronize.

La méthode WdfInterruptSynchronize retourne une fois l’exécution de la fonction de rappel EvtInterruptSynchronize terminée.

Au lieu d’appeler WdfInterruptSynchronize, votre pilote peut appeler WdfInterruptAcquireLock et WdfInterruptReleaseLock.

Pour plus d’informations sur la méthode WdfInterruptSynchronize , consultez Synchronisation du code d’interruption.

Pour plus d’informations sur la gestion des interruptions dans les pilotes basés sur l’infrastructure, consultez Gestion des interruptions matérielles.

Pour les interruptions de niveau passif, le pilote doit appeler WdfInterruptSynchronize à l’adresse IRQL = PASSIVE_LEVEL.

N’appelez pas WdfInterruptSynchronize à partir d’un contexte de thread arbitraire, tel qu’un gestionnaire de requêtes.

Exemples

L’exemple de code suivant montre comment appeler WdfInterruptSynchronize pour planifier l’exécution d’une fonction de rappel EvtInterruptSynchronize .

BOOLEAN synchronizeReturnValue;

synchronizeReturnValue = WdfInterruptSynchronize(
                                         WdfInterrupt,
                                         MyEvtInterruptSynchronize,
                                         CallbackContext
                                         );

Configuration requise

Condition requise Valeur
Plateforme cible Universal
Version KMDF minimale 1.0
Version UMDF minimale 2.0
En-tête wdfinterrupt.h (inclure Wdf.h)
Bibliothèque Wdf01000.sys (KMDF) ; WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
Règles de conformité DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Voir aussi

EvtInterruptSynchronize

WdfInterruptAcquireLock

WdfInterruptReleaseLock