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 de contrôleur GPIO. L’extension de framework 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
Aucun
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 conserve 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 accessibles par l’ISR GpioClx.
GpioClx ISR appelle les fonctions de rappel implémentées par le pilote pour accéder à l’état d’interruption et activer les registres dans le contrôleur GPIO. Selon les fonctionnalités du contrôleur GPIO, l’ISR est appelé à DIRQL ou à PASSIVE_LEVEL. Pour plus d’informations, consultez Interrupt-Related rappels.
Si l’ISR GpioClx accède à ces registres d’interruptions au niveau de DIRQL, GPIO_CLX_AcquireInterruptLock déclenche l’IRQL du thread appelant vers le DIRQL auquel l’ISR s’exécute. Si l’ISR s’exécute à PASSIVE_LEVEL, cette méthode ne modifie pas le runtime d’intégration du thread appelant.
La méthode GPIO_CLX_ReleaseInterruptLock libère un verrou d’interruption qui a été acquis dans 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 GPIO_CLX_AcquireInterruptLock a déclenché le runtime d’intégration du thread appelant, GPIO_CLX_ReleaseInterruptLock restaure le runtime d’intégration 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. Toutefois, il s’agit d’une erreur irrécupérable pour le conducteur de tenter 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 une vérification de bogue dans les builds de débogage de GpioClx.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Disponible à partir de Windows 8. |
plateforme cible | Universel |
d’en-tête | gpioclx.h |
bibliothèque | Msgpioclxstub.lib |
IRQL | DIRQL ou à PASSIVE_LEVEL. Voir les remarques. |