Freigeben über


GPIO_CLX_AcquireInterruptLock-Funktion (gpioclx.h)

Die GPIO_CLX_AcquireInterruptLock Methode erwirbt eine Unterbrechungssperre auf einer Bank von Pins im allgemeinen I/O-Controller (GPIO).

Syntax

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

Parameter

[in] Context

Ein Zeiger auf den Gerätekontext des GPIO-Controllertreibers. Die GPIO-Frameworkerweiterung (GpioClx) übergibt diesen Zeigerwert als Parameter an die Rückruffunktionen, die vom GPIO-Controllertreiber implementiert werden.

[in] BankId

Der Bezeichner für diese Bank von GPIO-Pins. Wenn N die Anzahl der Banken im GPIO-Controller ist, ist BankId eine ganze Zahl im Bereich 0 bis N-1.

Rückgabewert

Nichts

Bemerkungen

Ein GPIO-Controllertreiberthread ruft diese Methode auf, um mit der Unterbrechungsdienstroutine (INTERRUPT Service Routine, ISR) in GpioClx zu synchronisieren. Während der Aufrufer die Unterbrechungssperre enthält, kann der ISR keine vom Treiber implementierten Rückruffunktionen aufrufen, um auf GPIO-Register in der angegebenen Bank zuzugreifen. Ein GPIO-Controllertreiber sollte diese Methode aufrufen, bevor versucht wird, auf GPIO-Register zuzugreifen, auf die von gpioClx ISR zugegriffen werden kann.

Die GPioClx ISR ruft Treiber implementierte Rückruffunktionen auf, um auf den Interruptstatus zuzugreifen und Register im GPIO-Controller zu aktivieren. Abhängig von den Funktionen des GPIO-Controllers wird der ISR entweder bei DIRQL oder bei PASSIVE_LEVEL aufgerufen. Weitere Informationen finden Sie unter Interrupt-Related Rückrufe.

Wenn der GPioClx ISR auf diese Interruptregister bei DIRQL zugreift, löst GPIO_CLX_AcquireInterruptLock die IRQL des aufrufenden Threads in den DIRQL aus, bei dem der ISR ausgeführt wird. Wenn der ISR bei PASSIVE_LEVEL ausgeführt wird, ändert diese Methode nicht die IRQL des aufrufenden Threads.

Die GPIO_CLX_ReleaseInterruptLock-Methode gibt eine Unterbrechungssperre frei, die in einem vorherigen Aufruf von GPIO_CLX_AcquireInterruptLockabgerufen wurde. Der parameter BankId gibt die Bank an, die von der Sperre betroffen ist. Um eine Sperre für eine Bank freizugeben, muss der parameter BankId des GPIO_CLX_ReleaseInterruptLock Aufrufs mit dem parameter BankId des GPIO_CLX_AcquireInterruptLock Aufrufs übereinstimmen, der die Sperre abgerufen hat. Wenn der GPIO_CLX_AcquireInterruptLock Aufruf den IRQL des aufrufenden Threads ausgelöst hat, stellt GPIO_CLX_ReleaseInterruptLock den ursprünglichen IRQL dieses Threads wieder her.

Der GPIO-Controllertreiber kann die Sperren auf den verschiedenen Banken im GPIO-Controller unabhängig erwerben und loslassen. Es ist jedoch ein schwerwiegender Fehler für den Fahrer, eine Sperre auf einer bestimmten Bank zu erwerben, wenn der Fahrer bereits eine Sperre auf dieser Bank hält.

Wenn der parameter Context NULL ist oder auf einen ungültigen GPIO-Gerätekontext verweist, verursacht diese Methode eine Fehlerüberprüfung in Debugbuilds von GpioClx.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Verfügbar ab Windows 8.
Zielplattform- Universal
Header- gpioclx.h
Library Msgpioclxstub.lib
IRQL- DIRQL oder bei PASSIVE_LEVEL. Siehe Anmerkungen.

Siehe auch

GPIO_CLX_ReleaseInterruptLock