GPIO_CLIENT_RELEASE_CONTROLLER Rückruffunktion (gpioclx.h)
Die CLIENT_ReleaseController Ereignisrückruffunktion führt Vorgänge aus, die benötigt werden, wenn auf das I/O-Controllergerät (GENERAL-Purpose I/O) nicht mehr zugegriffen werden kann.
Syntax
GPIO_CLIENT_RELEASE_CONTROLLER GpioClientReleaseController;
NTSTATUS GpioClientReleaseController(
[in] WDFDEVICE Device,
[in] PVOID Context
)
{...}
Parameter
[in] Device
Ein WDFDEVICE-Handle für das Framework-Geräteobjekt, das den GPIO-Controller darstellt.
[in] Context
Ein Zeiger auf den Gerätekontext des GPIO-Controllertreibers.
Rückgabewert
Die CLIENT_ReleaseController-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, nachdem auf das GPIO-Controllergerät nicht mehr zugegriffen werden kann.
Während des CLIENT_ReleaseController Rückrufs sollte der GPIO-Controllertreiber alle Hardwareressourcen freigeben, die er aufgrund des vorherigen Aufrufs der CLIENT_PrepareController Rückruffunktion abgerufen hat. Im Falle eines speicherzuordnungen GPIO-Controllergeräts sollte der Treiber die Zuordnung des Speicheradressenbereichs oder der Bereiche aufheben, die den Hardwareregistern zugewiesen sind. Für einen Controller, der nicht im Arbeitsspeicher zugeordnet ist, sollte der Treiber die zuvor geöffnete logische Verbindung mit dem Controller schließen.
Rufen Sie die GPIO_CLX_RegisterClient Methode auf, um die CLIENT_ReleaseController Rückruffunktion des Treibers zu registrieren. Diese Methode akzeptiert als Eingabeparameter einen Zeiger auf eine GPIO_CLIENT_REGISTRATION_PACKET Struktur, die einen CLIENT_ReleaseController Funktionszeiger enthält.
Obwohl die CLIENT_ReleaseController Rückruffunktion bei IRQL = PASSIVE_LEVEL aufgerufen wird, sollten Sie diese Funktion nicht seitenfähig machen. Der CLIENT_ReleaseController 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_ReleaseController 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_ReleaseController Rückruffunktion zu definieren, die MyEvtGpioReleaseController
benannt ist, verwenden Sie den funktionstyp GPIO_CLIENT_RELEASE_CONTROLLER, wie in diesem Codebeispiel gezeigt:
GPIO_CLIENT_RELEASE_CONTROLLER MyEvtGpioReleaseController;
Implementieren Sie dann die Rückruffunktion wie folgt:
_Use_decl_annotations_
NTSTATUS
MyEvtGpioReleaseController(
WDFDEVICE Device,
PVOID Context
)
{ ... }
Der GPIO_CLIENT_RELEASE_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_RELEASE_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. |