Freigeben über


GPIO_CLIENT_QUERY_ACTIVE_INTERRUPTS Rückruffunktion (gpioclx.h)

Die CLIENT_QueryActiveInterrupts Ereignisrückruffunktion fragt den Status einer Reihe von allgemeinen I/O-Pins (GPIO) ab, die als Interrupteingaben konfiguriert sind.

Syntax

GPIO_CLIENT_QUERY_ACTIVE_INTERRUPTS GpioClientQueryActiveInterrupts;

NTSTATUS GpioClientQueryActiveInterrupts(
  [in]      PVOID Context,
  [in, out] PGPIO_QUERY_ACTIVE_INTERRUPTS_PARAMETERS QueryActiveParameters
)
{...}

Parameter

[in] Context

Ein Zeiger auf den Gerätekontext des GPIO-Controllertreibers.

[in, out] QueryActiveParameters

Ein Zeiger auf eine GPIO_QUERY_ACTIVE_INTERRUPTS_PARAMETERS Struktur, die beim Einstieg die GPIO-Interrupt-Pins zur Abfrage beschreibt und beim Beenden den aktiven und aktivierten Unterbrechungszustand dieser Pins enthält.

Rückgabewert

Die CLIENT_QueryActiveInterrupts-Funktion gibt STATUS_SUCCESS zurück, wenn der Aufruf erfolgreich ist. Andernfalls wird ein entsprechender Fehlercode zurückgegeben.

Bemerkungen

Diese Rückruffunktion wird vom GPIO-Controllertreiber implementiert. Die GPIO-Frameworkerweiterung (GpioClx) ruft diese Funktion auf, um eine Reihe von GPIO-Pins abzufragen, die als Interruptanforderungseingaben konfiguriert sind.

Die QueryActiveParameters Parameter verweist auf eine GPIO_QUERY_ACTIVE_INTERRUPTS_PARAMETERS Struktur zugeordnete Aufrufer. Der Aufrufer legt die Werte der BankId und EnabledMask Member dieser Struktur fest. Die CLIENT_QueryActiveInterrupts-Funktion schreibt in das ActiveMask- Element der Struktur.

Bei der Eingabe sollten die Bits, die im EnabledMask Member festgelegt sind, mit dem Satz der derzeit aktivierten Unterbrechungen in der Bank übereinstimmen. Bei der Rückgabe sollten die bits, die im ActiveMask- Member festgelegt sind, Unterbrechungen entsprechen, die sowohl aktiviert als auch aktiv sind. Wenn also ein Bit in EnabledMask null ist, muss das entsprechende Bit in ActiveMask null sein.

Rufen Sie die GPIO_CLX_RegisterClient Methode auf, um die CLIENT_QueryActiveInterrupts Rückruffunktion des Treibers zu registrieren. Diese Methode akzeptiert als Eingabeparameter einen Zeiger auf eine GPIO_CLIENT_REGISTRATION_PACKET Struktur, die einen CLIENT_QueryActiveInterrupts Funktionszeiger enthält.

GpioClx ruft die CLIENT_QueryActiveInterrupts Rückruffunktion entweder bei PASSIVE_LEVEL oder DIRQL auf, abhängig von den Geräteinformationen, die die CLIENT_QueryControllerBasicInformation Rückruffunktion für GpioClx bereitstellt. Die CLIENT_QueryControllerBasicInformation-Funktion stellt Geräteinformationen in Form einer CLIENT_CONTROLLER_BASIC_INFORMATION Struktur bereit. Wenn die MemoryMappedController- Flagbit im Flags Mitglied dieser Struktur festgelegt ist, ruft GpioClx die CLIENT_QueryActiveInterrupts-Funktion bei DIRQL auf, d. h. die IRQL, bei der der ISR in GpioClx ausgeführt wird. Andernfalls wird diese Funktion bei PASSIVE_LEVEL aufgerufen. Weitere Informationen zu diesem Flagbit finden Sie unter Optional und Required GPIO Callback Functions.

Beispiele

Um eine CLIENT_QueryActiveInterrupts Rückruffunktion zu definieren, müssen Sie zuerst eine Funktionsdeklaration bereitstellen, die den Typ der rückruffunktion identifiziert, die Sie definieren. Windows stellt eine Reihe von Rückruffunktionstypen für Treiber bereit. Durch das Deklarieren einer Funktion mithilfe der Rückruffunktionstypen können Codeanalyse für Treiber, statische Treiberüberprüfung (SDV) und andere Überprüfungstools Fehler finden, und es ist eine Anforderung zum Schreiben von Treibern für das Windows-Betriebssystem.

Um beispielsweise eine CLIENT_QueryActiveInterrupts Rückruffunktion zu definieren, die MyEvtGpioQueryActiveInterruptsbenannt ist, verwenden Sie den GPIO_CLIENT_QUERY_ACTIVE_INTERRUPTS Funktionstyp, wie in diesem Codebeispiel gezeigt:

GPIO_CLIENT_QUERY_ACTIVE_INTERRUPTS MyEvtGpioQueryActiveInterrupts;

Implementieren Sie dann die Rückruffunktion wie folgt:

_Use_decl_annotations_
NTSTATUS
  MyEvtGpioQueryActiveInterrupts(
    PVOID Context,
    PGPIO_QUERY_ACTIVE_INTERRUPTS_PARAMETERS QueryActiveParameters
    )
{ ... }

Der GPIO_CLIENT_QUERY_ACTIVE_INTERRUPTS Funktionstyp wird in der Headerdatei "Gpioclx.h" definiert. Um Fehler genauer zu identifizieren, wenn Sie die Codeanalysetools ausführen, müssen Sie der Funktionsdefinition die Use_decl_annotations Anmerkung hinzufügen. Die Use_decl_annotations Anmerkung stellt sicher, dass die Anmerkungen, die auf den Funktionstyp GPIO_CLIENT_QUERY_ACTIVE_INTERRUPTS in der Headerdatei angewendet werden, verwendet 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_annotationsfinden Sie unter Annotating Function Behavior.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Wird ab Windows 8 unterstützt.
Zielplattform- Desktop
Header- gpioclx.h
IRQL- Siehe Anmerkungen.

Siehe auch

CLIENT_CONTROLLER_BASIC_INFORMATION

CLIENT_QueryControllerBasicInformation

GPIO_CLIENT_REGISTRATION_PACKET

GPIO_CLX_RegisterClient

GPIO_QUERY_ACTIVE_INTERRUPTS_PARAMETERS