Freigeben über


GPIO_CLIENT_QUERY_ACTIVE_INTERRUPTS Rückruffunktion (gpioclx.h)

Die CLIENT_QueryActiveInterrupts Ereignisrückruffunktion fragt den Zustand einer Reihe von GPIO-Pins (Universelle E/A) 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 bei der Eingabe die GPIO-Interrupt-Pins für die Abfrage beschreibt und beim Beenden den aktiven und aktivierten Interruptstatus dieser Pins enthält.

Rückgabewert

Die CLIENT_QueryActiveInterrupts-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 eine Reihe von GPIO-Pins abzufragen, die als Interruptanforderungseingaben konfiguriert sind.

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

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

Um die CLIENT_QueryActiveInterrupts 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_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 das Flagbit "MemoryMappedController " im Flags-Member dieser Struktur festgelegt ist, ruft GpioClx die CLIENT_QueryActiveInterrupts-Funktion bei DIRQL auf, d. h. die IRQL, an der der ISR in GpioClx ausgeführt wird. Andernfalls wird diese Funktion bei PASSIVE_LEVEL aufgerufen. Weitere Informationen zu diesem Flag-Bit finden Sie unter Optionale und erforderliche GPIO-Rückruffunktionen.

Beispiele

Um eine CLIENT_QueryActiveInterrupts 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_QueryActiveInterrupts Rückruffunktion mit dem Namen MyEvtGpioQueryActiveInterruptszu definieren, verwenden Sie den Funktionstyp GPIO_CLIENT_QUERY_ACTIVE_INTERRUPTS, wie in diesem Codebeispiel gezeigt:

GPIO_CLIENT_QUERY_ACTIVE_INTERRUPTS MyEvtGpioQueryActiveInterrupts;

Implementieren Sie dann Ihre Rückruffunktion wie folgt:

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

Der GPIO_CLIENT_QUERY_ACTIVE_INTERRUPTS 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_QUERY_ACTIVE_INTERRUPTS 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.

Weitere Informationen

CLIENT_CONTROLLER_BASIC_INFORMATION

CLIENT_QueryControllerBasicInformation

GPIO_CLIENT_REGISTRATION_PACKET

GPIO_CLX_RegisterClient

GPIO_QUERY_ACTIVE_INTERRUPTS_PARAMETERS