Condividi tramite


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.

Vedere anche

GPIO_CLX_ReleaseInterruptLock