GPIO_CLIENT_STOP_CONTROLLER Rückruffunktion (gpioclx.h)
Die CLIENT_StopController Ereignisrückruffunktion führt Vorgänge aus, die erforderlich sind, um das GPIO-Controllergerät (Universell E/A) auf das Beenden des D0-Energiezustands vorzubereiten.
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. Bei TRUE sollte der Hardwarekontext gespeichert werden. Bei 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 beim Beenden des D0-Energiezustands eingeben soll. Der GPIO-Controllertreiber kann anhand dieser Informationen bestimmen, wie das Controllergerät konfiguriert werden soll, bevor es D0 verlässt.
Rückgabewert
Die CLIENT_StopController-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 das GPIO-Controllergerät auf das Ausschalten oder den Übergang in einen Energiesparzustand vorzubereiten. Diese Rückruffunktion muss alle Vorgänge ausführen, die erforderlich sind, bevor das Gerät in einen Energiesparmodus wechselt, z. B. das Speichern von Informationen, die der Treiber später benötigt, nachdem das Gerät im Energiezustand D0 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 Ausgabeübergänge auftreten, wenn das GPIO-Controllergerät ausgeschaltet ist.
Um die CLIENT_StopController 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_StopController Funktionszeiger enthält.
Obwohl die CLIENT_StopController Rückruffunktion unter IRQL = PASSIVE_LEVEL aufgerufen wird, sollten Sie diese Funktion nicht ausgelagert machen. Der CLIENT_StopController Rückrufs befindet sich im wichtigen Zeitsteuerungspfad für die Wiederherstellung der Stromversorgung der Geräte auf der Hardwareplattform und sollte aus Leistungsgründen nicht durch Seitenfehler verzögert werden.
Beispiele
Um eine CLIENT_StopController 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_StopController Rückruffunktion mit dem Namen MyEvtGpioStopController
zu definieren, verwenden Sie den Funktionstyp GPIO_CLIENT_STOP_CONTROLLER, wie in diesem Codebeispiel gezeigt:
GPIO_CLIENT_STOP_CONTROLLER MyEvtGpioStopController;
Implementieren Sie dann Ihre Rückruffunktion wie folgt:
_Use_decl_annotations_
VOID
MyEvtGpioStopController(
PVOID Context,
BOOLEAN RestoreContext,
WDF_POWER_DEVICE_STATE TargetState
)
{ ... }
Der GPIO_CLIENT_STOP_CONTROLLER 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_STOP_CONTROLLER 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 | Wird unter PASSIVE_LEVEL aufgerufen. |