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. |