Partager via


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 maintenant 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 vers 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 l’infrastructure transmet à la fonction de rappel EvtInterruptSynchronize.

Valeur de retour

WdfInterruptSynchronize retourne la valeur d’état booléenne retournée par la fonction de rappel EvtInterruptSynchronize.

Une vérification de bogue 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 avec la maintenance des interruptions d’appareil désactivées efficacement, vous devez placer ce code dans un EvtInterruptSynchronize fonction de rappel. Pour planifier l’exécution de la fonction de rappel, votre pilote doit appeler WdfInterruptSynchronize.

La méthode WdfInterruptSynchronize retourne après l’exécution de la fonction de rappel EvtInterruptSynchronize.

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 à 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
                                         );

Spécifications

Besoin Valeur
plateforme cible Universel
version minimale de KMDF 1.0
version minimale de UMDF 2.0
En-tête wdfinterrupt.h (include 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