Freigeben über


IOCTL_GPIO_READ_PINS IOCTL (gpio.h)

Der IOCTL_GPIO_READ_PINS I/O-Steuerungscode ermöglicht einem Client des allgemeinen I/O-Controllers (GPIO) das Lesen aus einer Reihe von GPIO-Pins, die als Eingaben konfiguriert sind. In der Regel sind die Clients eines GPIO-Controllers Treiber für Peripheriegeräte, die eine Verbindung mit GPIO-Pins herstellen.

Hauptcode

IRP_MJ_DEVICE_CONTROL

Eingabepuffer

Kein Eingabepuffer.

Eingabepufferlänge

Nichts.

Ausgabepuffer

Der Ausgabepuffer.

Länge des Ausgabepuffers

Der Ausgabepuffer sollte groß genug sein, um Lesewerte aus allen GPIO-Pins zu enthalten, die Teil der Zielverbindung sind, an die der Client die Anforderung sendet. Wenn die GPIO-Controllerhardware beispielsweise 64 GPIO-Pins implementiert und der Client eine Verbindung mit drei dieser GPIO-Pins öffnet, ist ein 1-Byte-Puffer ausreichend groß, um die drei 1-Bit-Werte zu enthalten, die aus den drei Pins in der Verbindung gelesen werden.

Statusblock

Wenn der Vorgang erfolgreich ist, legt der GPIO-Controllertreiber den Status Member auf STATUS_SUCCESS fest und legt den Information Member auf die Gesamtanzahl der Bytes fest, die während des angeforderten Vorgangs übertragen werden. Wenn der Vorgang N-Bits überträgt, wird die Anzahl der übertragenen Bytes (N + 7) / 8. (Das heißt, 7 wird N hinzugefügt, um die nächste Bytegrenze vor der ganzzahligen Division um 8 aufzurunden.)

Wenn diese Anforderung fehlschlägt, wird der Status Member auf einen Fehlercode festgelegt, und es werden keine Daten aus den GPIO-Pins gelesen. Der angeforderte Vorgang kann aus verschiedenen Gründen fehlschlagen, was zu ungültigen Clienteingaben, niedrigen Ressourcen und Gerätefehlern führen kann.

Wenn der Ausgabepuffer nicht groß genug ist, um die Daten zu enthalten, die von allen GPIO-Pins in der Zielverbindung gelesen werden, wird der Status- Member auf STATUS_BUFFER_TOO_SMALL festgelegt. Wenn die GPIO-Pins in der Zielverbindung als Ausgaben konfiguriert sind, wird der Status Member auf STATUS_GPIO_OPERATION_DENIED festgelegt.

Bemerkungen

Diese Anforderung liest alle GPIO-Pins, die Teil der Zielverbindung sind, an die der Client die Anforderung sendet. Wenn die Verbindung beispielsweise drei Pins enthält, werden die aus diesen Pins gelesenen 1-Bit-Werte in Bits 0, 1 und 2 im Ausgabepuffer gespeichert. Die drei Pins in diesem Beispiel können GPIO-Pins 7, 8 und 23 in der GPIO-Controllerhardware zugeordnet werden. Wenn ja, wird GPIO-Pin 7 in Bit 0 (dem geringsten signifikanten Bit) des Puffers gespeichert, GPIO-Pin 8 wird in Bit 1 des Puffers gespeichert, und GPIO-Pin 23 wird in Bit 2 des Puffers gespeichert.

Wenn der Client eine Verbindung mit einem ZIEL-GPIO-Gerät öffnet, werden alle GPIO-Pins in dieser Verbindung entweder als Eingaben oder als Ausgaben konfiguriert. Eine IOCTL_GPIO_READ_PINS Anforderung kann nur erfolgreich ausgeführt werden, wenn die Ziel-Pins Eingaben sind.

Der Client sendet diese E/A-Steuerelementanforderung an das Dateiobjekt für das Zielgerät. Das Dateiobjekt ist eine FILE_OBJECT Struktur, die eine logische Verbindung mit dem Ziel darstellt. Kernelmodustreiberframework (KMDF)-Treiber rufen die WdfIoTargetCreate Methode auf, um diese Verbindung zu öffnen. Benutzermodustreiberframework (UMDF)-Treiber rufen die IWDFRemoteTarget::OpenFileByName Methode auf, um die Verbindung zu öffnen.

Codebeispiele, die zeigen, wie Sie die IOCTL_GPIO_READ_PINS Anforderung verwenden, um eine Reihe von GPIO-I/O-Pins zu lesen, finden Sie in den folgenden Themen:

Verbinden eines KMDF-Treibers mit GPIO-I/O-Pins

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Wird ab Windows 8 unterstützt.
Header- gpio.h

Siehe auch

FILE_OBJECT

IWDFRemoteTarget::OpenFileByName

WdfIoTargetCreate