GPIO_CLIENT_UNMASK_INTERRUPT Rückruffunktion (gpioclx.h)
Die CLIENT_UnmaskInterrupt Ereignisrückruffunktion entlarvt den Interrupt auf einem GPIO-Pin (Universelle E/A), der als Interrupteingabe konfiguriert ist.
Syntax
GPIO_CLIENT_UNMASK_INTERRUPT GpioClientUnmaskInterrupt;
NTSTATUS GpioClientUnmaskInterrupt(
[in] PVOID Context,
[in] PGPIO_ENABLE_INTERRUPT_PARAMETERS InterruptParameters
)
{...}
Parameter
[in] Context
Ein Zeiger auf den Gerätekontext des GPIO-Controllertreibers.
[in] InterruptParameters
Ein Zeiger auf eine GPIO_ENABLE_INTERRUPT_PARAMETERS-Struktur , die einen GPIO-Pin angibt und die Interruptattribute dieses Pins beschreibt.
Rückgabewert
Die CLIENT_UnmaskInterrupt-Funktion gibt STATUS_SUCCESS zurück, wenn der Aufruf erfolgreich ist. Andernfalls wird ein geeigneter Fehlercode zurückgegeben.
Hinweise
Diese Rückruffunktion wird vom GPIO-Controllertreiber implementiert. Die GPIO-Frameworkerweiterung (GpioClx) ruft diese Funktion auf, um Interrupts für einen GPIO-Pin aufzuheben, der als Interruptanforderungseingabe konfiguriert ist. Weitere Informationen finden Sie unter GPIO-Interruptmasken.
Um die CLIENT_UnmaskInterrupt Rückruffunktion Ihres Treibers zu registrieren, rufen Sie die GPIO_CLX_RegisterClient-Methode auf. Diese Methode akzeptiert als Eingabeparameter einen Zeiger auf eine GPIO_CLIENT_REGISTRATION_PACKET-Struktur, die einen CLIENT_UnmaskInterrupt-Funktionszeiger enthält.
Die funktion CLIENT_UnmaskInterrupt wird von der Interruptdienstroutine (ISR) in GpioClx aufgerufen. Diese ISR wird entweder mit PASSIVE_LEVEL oder DIRQL ausgeführt, abhängig von den Geräteinformationen, die die CLIENT_QueryControllerBasicInformation Rückruffunktion an GpioClx bereitstellt. Die CLIENT_QueryControllerBasicInformation-Funktion stellt Geräteinformationen in Form einer CLIENT_CONTROLLER_BASIC_INFORMATION-Struktur bereit. Wenn das Flagbit "MemoryMappedController " im Flags-Element dieser Struktur festgelegt ist, wird die GpioClx ISR bei DIRQL ausgeführt und ruft die CLIENT_UnmaskInterrupt-Funktion bei DIRQL auf. Andernfalls wird die ISR bei PASSIVE_LEVEL ausgeführt und ruft die Funktion bei PASSIVE_LEVEL auf. Weitere Informationen zu diesem Flag-Bit finden Sie unter Optionale und erforderliche GPIO-Rückruffunktionen.
Beispiele
Um eine CLIENT_UnmaskInterrupt Rückruffunktion zu definieren, müssen Sie zunächst eine Funktionsdeklaration bereitstellen, die den Typ der Rückruffunktion identifiziert, die Sie definieren. Windows bietet eine Reihe von Rückruffunktionstypen für Treiber. Das Deklarieren einer Funktion mithilfe der Rückruffunktionstypen hilft der Codeanalyse für Treiber, der statischen Treiberüberprüfung (Static Driver Verifier , SDV) und anderen Überprüfungstools, Fehler zu finden, und es ist eine Voraussetzung für das Schreiben von Treibern für das Windows-Betriebssystem.
Um beispielsweise eine CLIENT_UnmaskInterrupt Rückruffunktion namens MyEvtGpioUnmaskInterrupt
zu definieren, verwenden Sie den Funktionstyp GPIO_CLIENT_UNMASK_INTERRUPT, wie in diesem Codebeispiel gezeigt:
GPIO_CLIENT_UNMASK_INTERRUPT MyEvtGpioUnmaskInterrupt;
Implementieren Sie dann Ihre Rückruffunktion wie folgt:
_Use_decl_annotations_
NTSTATUS
MyEvtGpioUnmaskInterrupt(
PVOID Context,
PGPIO_ENABLE_INTERRUPT_PARAMETERS InterruptParameters
)
{ ... }
Der GPIO_CLIENT_UNMASK_INTERRUPT Funktionstyp ist in der Gpioclx.h-Headerdatei definiert. Um Fehler beim Ausführen der Codeanalysetools genauer zu identifizieren, müssen Sie der Funktionsdefinition die anmerkung Use_decl_annotations hinzufügen. Die Use_decl_annotations Anmerkung stellt sicher, dass die Anmerkungen verwendet werden, die auf den GPIO_CLIENT_UNMASK_INTERRUPT Funktionstyp in der Headerdatei angewendet werden. Weitere Informationen zu den Anforderungen für Funktionsdeklarationen finden Sie unter Deklarieren von Funktionen mithilfe von Funktionsrollentypen für KMDF-Treiber. Weitere Informationen zu Use_decl_annotations finden Sie unter Annotating Function Behavior.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Unterstützt ab Windows 8. |
Zielplattform | Desktop |
Kopfzeile | gpioclx.h |
IRQL | Siehe Hinweise. |