Freigeben über


GPIO_CLIENT_SAVE_BANK_HARDWARE_CONTEXT Rückruffunktion (gpioclx.h)

Die CLIENT_SaveBankHardwareContext Ereignisrückruffunktion speichert den Hardwarekontext einer Bank mit GPIO-Pins (Universell-E/A).

Syntax

GPIO_CLIENT_SAVE_BANK_HARDWARE_CONTEXT GpioClientSaveBankHardwareContext;

void GpioClientSaveBankHardwareContext(
  [in] PVOID Context,
  [in] PGPIO_SAVE_RESTORE_BANK_HARDWARE_CONTEXT_PARAMETERS Parameters
)
{...}

Parameter

[in] Context

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

[in] Parameters

Ein Zeiger auf eine GPIO_SAVE_RESTORE_BANK_HARDWARE_CONTEXT_PARAMETERS-Struktur , die die Bank der zu speichernden GPIO-Pins beschreibt.

Rückgabewert

Keine

Bemerkungen

Die CLIENT_SaveBankHardwareContext-Funktion gibt STATUS_SUCCESS zurück, wenn der Aufruf erfolgreich ist. Andernfalls wird ein entsprechender Fehler status Code zurückgegeben.

Wenn eine Bank mit GPIO-Pins die Energieverwaltung auf Komponentenebene unterstützt, kann GpioClx die Bank in einen Fx-Zustand mit niedriger Leistung umschalten, wenn sich die Bank im Leerlauf befindet. Wenn die GPIO-Controllerbank ihren Hardwarekontext im Fx-Zustand verliert, muss der GPIO-Controllertreiber diesen Kontext vor dem Übergang von F0 zu Fx speichern und später den Kontext nach dem Wechsel von Fx zu F0 wiederherstellen. Derzeit ist F1 der einzige Low-Power-Zustand, der für GPIO-Controller definiert ist, die GpioClx verwenden.

GpioClx ruft die funktion CLIENT_SaveBankHardwareContext auf, um den Hardwarekontext der Bank zu speichern. Später ruft GpioClx die CLIENT_RestoreBankHardwareContext Ereignisrückruffunktion auf, um den zuvor gespeicherten Kontext wiederherzustellen.

Einige GPIO-Controllergeräte ermöglichen es, ausgewählte Pinbanken unabhängig von anderen Banken im selben Gerät ein- und auszuschalten. So kann Strom gespart werden, indem eine Bank ausgeschaltet wird, die sich im Leerlauf befindet.

Um die CLIENT_SaveBankHardwareContext 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_SaveBankHardwareContext Funktionszeiger enthält.

GpioClx ruft die CLIENT_SaveBankHardwareContext 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-Element dieser Struktur festgelegt ist, ruft GpioClx die CLIENT_SaveBankHardwareContext-Funktion bei DIRQL auf, d. h. die IRQL, an der die ISR in GpioClx ausgeführt wird. Weitere Informationen zu diesem Flag-Bit finden Sie unter Optionale und erforderliche GPIO-Rückruffunktionen.

Beispiele

Um eine CLIENT_SaveBankHardwareContext 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_SaveBankHardwareContext Rückruffunktion mit dem Namen MyEvtGpioSaveBankHardwareContextzu definieren, verwenden Sie den Funktionstyp GPIO_CLIENT_SAVE_BANK_HARDWARE_CONTEXT, wie in diesem Codebeispiel gezeigt:

GPIO_CLIENT_SAVE_BANK_HARDWARE_CONTEXT MyEvtGpioSaveBankHardwareContext;

Implementieren Sie dann Ihre Rückruffunktion wie folgt:

_Use_decl_annotations_
NTSTATUS
  MyEvtGpioSaveBankHardwareContext(
    PVOID Context,
    PGPIO_SAVE_RESTORE_BANK_HARDWARE_CONTEXT_PARAMETERS Parameters
    )
{ ... }

Der GPIO_CLIENT_SAVE_BANK_HARDWARE_CONTEXT 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_SAVE_BANK_HARDWARE_CONTEXT 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

CLIENT_RestoreBankHardwareContext

GPIO_CLIENT_REGISTRATION_PACKET

GPIO_CLX_RegisterClient

GPIO_SAVE_RESTORE_BANK_HARDWARE_CONTEXT_PARAMETERS