GPIO_CLIENT_CONTROLLER_SPECIFIC_FUNCTION Rückruffunktion (gpioclx.h)
Die CLIENT_ControllerSpecificFunction Ereignisrückruffunktion führt einen Vorgang aus, der für einen bestimmten allgemeinen I/O-Controller (GPIO) spezifisch ist.
Syntax
GPIO_CLIENT_CONTROLLER_SPECIFIC_FUNCTION GpioClientControllerSpecificFunction;
NTSTATUS GpioClientControllerSpecificFunction(
[in] PVOID Context,
[in, out] PGPIO_CLIENT_CONTROLLER_SPECIFIC_FUNCTION_PARAMETERS Parameters
)
{...}
Parameter
[in] Context
Ein Zeiger auf den Gerätekontext des GPIO-Controllertreibers.
[in, out] Parameters
Ein Zeiger auf eine GPIO_CLIENT_CONTROLLER_SPECIFIC_FUNCTION_PARAMETERS Struktur, die die Eingabe- und Ausgabepuffer für den controllerspezifischen Vorgang enthält.
Rückgabewert
Die CLIENT_ControllerSpecificFunction-Funktion gibt STATUS_SUCCESS zurück, wenn der Aufruf erfolgreich ist. Mögliche Rückgabewerte sind die folgenden Fehlercodes.
Rückgabecode | Beschreibung |
---|---|
|
Der GPIO-Controller unterstützt den durch die Eingabeparameter angegebenen Vorgang nicht. |
|
Die Größe des Eingabepuffers oder Ausgabepuffers ist zu klein. |
Bemerkungen
Als Option kann ein GPIO-Controllertreiber IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION Anforderungen unterstützen. Diese Art von E/A-Steuerungsanforderung (IOCTL) führt controllerspezifische Vorgänge für den Vorteil von Peripheriegerätetreibern aus, die diese Vorgänge erfordern. Zur Unterstützung dieses IOCTL implementiert ein GPIO-Controllertreiber eine CLIENT_ControllerSpecificFunction Funktion.
Die GPIO-Frameworkerweiterung (GpioClx) unterstützt die CLIENT_ControllerSpecificFunction-Funktion, um die spezifischen Anforderungen bestimmter Hardwareplattformen zu erfüllen. Typische GPIO-Controllertreiber implementieren diese Funktion nicht. Ein Peripheriegerätetreiber, der IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION Anforderungen verwendet, um einen hardwarespezifischen Vorgang auf einer Plattform auszuführen, riskiert den Verlust der Kompatibilität mit anderen Plattformen, die diesen Vorgang nicht unterstützen.
In der Regel programmiert die CLIENT_ControllerSpecificFunction-Funktion den GPIO-Controller, um einen hardwarespezifischen Vorgang für eine Reihe von GPIO-Pins auszuführen. Die Eingabe- und Ausgabeparameter für diesen Vorgang werden vom Entwickler für den GPIO-Controllertreiber definiert. Diese Vorgänge können nur von einem Peripheriegerätetreiber angefordert werden, der von einem GPIO-Controllertreiber implementiert wird.
Wenn GpioClx eine IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION Anforderung empfängt, wird überprüft, ob der GPIO-Controllertreiber eine CLIENT_ControllerSpecificFunction-Funktion implementiert hat. Wenn dies der Fall ist, kopiert GpioClx die Beschreibungen der Eingabe- und Ausgabepuffer aus dem IOCTL in eine GPIO_CLIENT_CONTROLLER_SPECIFIC_FUNCTION_PARAMETERS Struktur und übergibt einen Zeiger an diese Struktur als Parameter an die CLIENT_ControllerSpecificFunction-Funktion. Wenn die Parameterwerte in der GPIO_CLIENT_CONTROLLER_SPECIFIC_FUNCTION_PARAMETERS-Struktur gültig sind, führt die Funktion den angeforderten Vorgang aus und gibt STATUS_SUCCESS zurück.
Wenn GpioClx eine IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION Anforderung empfängt und der GPIO-Controllertreiber keine CLIENT_ControllerSpecificFunction-Funktion implementiert, schließt GpioClx die IOCTL mit Fehlercode STATUS_NOT_IMPLEMENTED ab.
Beispiele
Um eine CLIENT_ControllerSpecificFunction 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_ControllerSpecificFunction Rückruffunktion zu definieren, die MyEvtGpioControllerSpecificFunction
benannt ist, verwenden Sie den funktionstyp GPIO_CLIENT_CONTROLLER_SPECIFIC_FUNCTION, wie in diesem Codebeispiel gezeigt:
GPIO_CLIENT_CONTROLLER_SPECIFIC_FUNCTION MyEvtGpioControllerSpecificFunction;
Implementieren Sie dann die Rückruffunktion wie folgt:
_Use_decl_annotations_
NTSTATUS
MyEvtGpioControllerSpecificFunction(
PVOID Context,
PGPIO_CLIENT_CONTROLLER_SPECIFIC_FUNCTION_PARAMETERS Parameters
)
{ ... }
Der GPIO_CLIENT_CONTROLLER_SPECIFIC_FUNCTION 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_CONTROLLER_SPECIFIC_FUNCTION 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. |