funzione GPIO_CLX_AcquireInterruptLock (gpioclx.h)
Il metodo GPIO_CLX_AcquireInterruptLock acquisisce un blocco di interrupt su una banca di pin nel controller di I/O (GPIO) per utilizzo generico.
Sintassi
void GPIO_CLX_AcquireInterruptLock(
[in] PVOID Context,
[in] BANK_ID BankId
);
Parametri
[in] Context
Puntatore al contesto di dispositivo del driver del controller GPIO . L'estensione del framework GPIO (GpioClx) passa questo valore del puntatore come parametro alle funzioni di callback implementate dal driver del controller GPIO.
[in] BankId
Identificatore per questa banca di pin GPIO. Se N è il numero di banche nel controller GPIO, BankId è un numero intero compreso nell'intervallo compreso tra 0 e N-1.
Valore restituito
Nessuno
Osservazioni
Un thread del driver del controller GPIO chiama questo metodo per la sincronizzazione con la routine del servizio interrupt (ISR) in GpioClx. Mentre il chiamante mantiene il blocco di interrupt, l'ISR non può chiamare le funzioni di callback implementate dal driver per accedere ai registri GPIO nella banca specificata. Un driver del controller GPIO deve chiamare questo metodo prima di cercare di accedere ai registri GPIO a cui è possibile accedere tramite GpioClx ISR.
GpioClx ISR chiama le funzioni di callback implementate dal driver per accedere allo stato di interrupt e abilitare i registri nel controller GPIO. A seconda delle funzionalità del controller GPIO, l'ISR viene chiamato in DIRQL o in PASSIVE_LEVEL. Per altre informazioni, vedere Interrupt-Related Callback.
Se GpioClx ISR accede a questi registri di interrupt in DIRQL, GPIO_CLX_AcquireInterruptLock genera l'IRQL del thread chiamante al DIRQL in cui viene eseguito l'ISR. Se l'ISR viene eseguito in PASSIVE_LEVEL, questo metodo non modifica l'IRQL del thread chiamante.
Il metodo GPIO_CLX_ReleaseInterruptLock rilascia un blocco di interrupt acquisito in una chiamata precedente a GPIO_CLX_AcquireInterruptLock. Il parametro BankId specifica la banca interessata dal blocco. Per rilasciare un blocco su una banca, il parametro BankId della chiamata GPIO_CLX_ReleaseInterruptLock deve corrispondere al parametro BankId della chiamata GPIO_CLX_AcquireInterruptLock che ha acquisito il blocco. Se la chiamata GPIO_CLX_AcquireInterruptLock ha generato l'IRQL del thread chiamante, GPIO_CLX_ReleaseInterruptLock ripristina l'IRQL originale del thread.
Il driver del controller GPIO può acquisire e rilasciare blocchi di interruzione in modo indipendente sulle varie banche nel controller GPIO. Tuttavia, si tratta di un errore irreversibile per il conducente di tentare di acquisire un blocco su una determinata banca se il conducente ha già un blocco su questa banca.
Se il parametro context è NULL o punta a un contesto di dispositivo GPIO non valido, questo metodo causa un controllo dei bug nelle build di debug di GpioClx.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Disponibile a partire da Windows 8. |
piattaforma di destinazione | Universale |
intestazione | gpioclx.h |
libreria | Msgpioclxstub.lib |
IRQL | DIRQL o in PASSIVE_LEVEL. Vedere la sezione Osservazioni. |