GPIO_CLIENT_STOP_CONTROLLER Rückruffunktion (gpioclx.h)
Die CLIENT_StopController Ereignisrückruffunktion führt Vorgänge aus, die zum Vorbereiten des allgemeinen E/A-Controllergeräts (GPIO) erforderlich sind, um den D0-Energiezustand zu beenden.
Syntax
GPIO_CLIENT_STOP_CONTROLLER GpioClientStopController;
NTSTATUS GpioClientStopController(
[in] PVOID Context,
[in] BOOLEAN SaveContext,
[in] WDF_POWER_DEVICE_STATE TargetState
)
{...}
Parameter
[in] Context
Ein Zeiger auf den Gerätekontext des GPIO-Controllertreibers.
[in] SaveContext
Gibt an, ob der Clienttreiber den aktuellen Hardwarekontext des GPIO-Controllergeräts speichern soll. Wenn TRUE, sollte der Hardwarekontext gespeichert werden. Wenn FALSE, sollte der Hardwarekontext nicht gespeichert werden. Weitere Informationen finden Sie in den Hinweisen.
[in] TargetState
Der Energiezustand des Zielgeräts. Dieser Parameter ist ein WDF_POWER_DEVICE_STATE Enumerationswert, der den Energiesparzustand angibt, den das Gerät eingeben soll, wenn er den D0-Energiezustand verlässt. Der GPIO-Controllertreiber kann diese Informationen verwenden, um zu bestimmen, wie das Controllergerät konfiguriert wird, bevor es D0 verlässt.
Rückgabewert
Die CLIENT_StopController-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-Framework-Erweiterung (GpioClx) ruft diese Funktion auf, um das GPIO-Controllergerät so vorzubereiten, dass es ausgeschaltet oder auf einen Energiesparzustand umgestellt wird. Diese Rückruffunktion muss alle Vorgänge ausführen, die erforderlich sind, bevor das Gerät in einen Energiesparzustand wechselt, z. B. das Speichern von Informationen, die der Treiber später benötigt, nachdem das Gerät in den D0-Energiezustand wiederhergestellt wurde.
In der Regel konfiguriert die CLIENT_StopController Rückruffunktion die GPIO-Pins in einen plattformspezifischen Anfangszustand. Diese Funktion kann z. B. alle GPIO-Pins als Eingaben konfigurieren, um zu verhindern, dass die Ausgabe vorübergehend auftritt, wenn das GPIO-Controllergerät deaktiviert ist.
Rufen Sie die GPIO_CLX_RegisterClient Methode auf, um die CLIENT_StopController Rückruffunktion des Treibers zu registrieren. Diese Methode akzeptiert als Eingabeparameter einen Zeiger auf eine GPIO_CLIENT_REGISTRATION_PACKET Struktur, die einen CLIENT_StopController Funktionszeiger enthält.
Obwohl die CLIENT_StopController Rückruffunktion bei IRQL = PASSIVE_LEVEL aufgerufen wird, sollten Sie diese Funktion nicht seitenfähig machen. Der CLIENT_StopController Rückruf befindet sich im kritischen Timing-Pfad zum Wiederherstellen der Energie auf den Geräten auf der Hardwareplattform und aus Leistungsgründen sollte es nicht durch Seitenfehler verzögert werden.
Beispiele
Um eine CLIENT_StopController 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_StopController Rückruffunktion zu definieren, die MyEvtGpioStopController
benannt ist, verwenden Sie den funktionstyp GPIO_CLIENT_STOP_CONTROLLER, wie in diesem Codebeispiel gezeigt:
GPIO_CLIENT_STOP_CONTROLLER MyEvtGpioStopController;
Implementieren Sie dann die Rückruffunktion wie folgt:
_Use_decl_annotations_
VOID
MyEvtGpioStopController(
PVOID Context,
BOOLEAN RestoreContext,
WDF_POWER_DEVICE_STATE TargetState
)
{ ... }
Der GPIO_CLIENT_STOP_CONTROLLER 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_STOP_CONTROLLER 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- | Wird bei PASSIVE_LEVEL aufgerufen. |