fonction GPIO_CLX_AcquireInterruptLock (gpioclx.h)

La méthode GPIO_CLX_AcquireInterruptLock acquiert un verrou d’interruption sur une banque de broches dans le contrôleur d’E/S à usage général (GPIO).

Syntaxe

void GPIO_CLX_AcquireInterruptLock(
  [in] PVOID   Context,
  [in] BANK_ID BankId
);

Paramètres

[in] Context

Pointeur vers le contexte de périphérique du pilote du contrôleur GPIO. L’extension d’infrastructure GPIO (GpioClx) transmet cette valeur de pointeur en tant que paramètre aux fonctions de rappel implémentées par le pilote du contrôleur GPIO.

[in] BankId

Identificateur de cette banque de broches GPIO. Si N est le nombre de banques dans le contrôleur GPIO, BankId est un entier compris entre 0 et N–1.

Valeur de retour

None

Remarques

Un thread de pilote de contrôleur GPIO appelle cette méthode pour se synchroniser avec la routine de service d’interruption (ISR) dans GpioClx. Bien que l’appelant détient le verrou d’interruption, l’ISR ne peut pas appeler les fonctions de rappel implémentées par le pilote pour accéder aux registres GPIO dans la banque spécifiée. Un pilote de contrôleur GPIO doit appeler cette méthode avant d’essayer d’accéder aux registres GPIO auxquels l’ISR GpioClx peut accéder.

L’ISR GpioClx appelle des fonctions de rappel implémentées par le pilote pour accéder aux status d’interruption et activer les inscriptions dans le contrôleur GPIO. Selon les fonctionnalités du contrôleur GPIO, l’ISR est appelé au niveau du DIRQL ou à PASSIVE_LEVEL. Pour plus d’informations, consultez Rappels liés aux interruptions.

Si l’ISR GpioClx accède à ces registres d’interruption sur DIRQL, GPIO_CLX_AcquireInterruptLock déclenche l’IRQL du thread appelant au DIRQL auquel l’ISR s’exécute. Si l’ISR s’exécute à PASSIVE_LEVEL, cette méthode ne modifie pas l’IRQL du thread appelant.

La méthode GPIO_CLX_ReleaseInterruptLock libère un verrou d’interruption qui a été acquis lors d’un appel précédent à GPIO_CLX_AcquireInterruptLock. Le paramètre BankId spécifie la banque affectée par le verrou. Pour libérer un verrou sur une banque, le paramètre BankId de l’appel GPIO_CLX_ReleaseInterruptLock doit correspondre au paramètre BankId de l’appel GPIO_CLX_AcquireInterruptLock qui a acquis le verrou. Si l’appel de GPIO_CLX_AcquireInterruptLock a déclenché l’IRQL du thread appelant, GPIO_CLX_ReleaseInterruptLock restaure l’IRQL d’origine de ce thread.

Le pilote de contrôleur GPIO peut acquérir et libérer indépendamment les verrous d’interruption sur les différentes banques du contrôleur GPIO. Cependant, c’est une erreur irrécupérable pour le conducteur d’essayer d’acquérir un verrou sur une banque particulière si le conducteur détient déjà un verrou sur cette banque.

Si le paramètre Context a la valeur NULL ou pointe vers un contexte d’appareil GPIO non valide, cette méthode provoque un bogue case activée dans les builds de débogage de GpioClx.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible à partir de Windows 8.
Plateforme cible Universal
En-tête gpioclx.h
Bibliothèque Msgpioclxstub.lib
IRQL DIRQL ou à PASSIVE_LEVEL. Consultez la section Notes.

Voir aussi

GPIO_CLX_ReleaseInterruptLock