IOCTL_GPIO_READ_PINS IOCTL (gpio.h)
Der IOCTL_GPIO_READ_PINS E/A-Steuerungscode ermöglicht es einem Client des GPIO-Controllers (Universelle E/A), aus einer Reihe von GPIO-Pins zu lesen, 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
Eingabepuffer
Kein Eingabepuffer.
Eingabepufferlänge
Keine.
Ausgabepuffer
Der Ausgabepuffer.
Länge des Ausgabepuffers
Der Ausgabepuffer sollte groß genug sein, um Messwerte aller 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 Ein-Byte-Puffer ausreichend groß, um die drei 1-Bit-Werte zu enthalten, die von den drei Pins in der Verbindung gelesen werden.
Statusblock
Wenn der Vorgang erfolgreich ist, legt der GPIO-Controllertreiber das Statuselement auf STATUS_SUCCESS fest und legt den Informationsmember auf die Gesamtanzahl der Bytes fest, die während des angeforderten Vorgangs übertragen wurden. Wenn der Vorgang N Bits überträgt, ist die Anzahl der übertragenen Bytes (N + 7) / 8. (Das heißt, 7 wird N hinzugefügt, um die nächste Bytegrenze vor der Ganzzahlteilung um 8 aufzurunden.)
Wenn diese Anforderung fehlschlägt, wird das Statuselement auf einen Fehlercode festgelegt, und es werden keine Daten aus den GPIO-Pins gelesen. Der angeforderte Vorgang kann aus verschiedenen Gründen fehlschlagen, z. B. ungültige Clienteingaben, geringe Ressourcen und Gerätefehler.
Wenn der Ausgabepuffer nicht groß genug ist, um die Daten zu enthalten, die von allen GPIO-Pins in der Zielverbindung gelesen werden, wird der Statusmember auf STATUS_BUFFER_TOO_SMALL festgelegt. Wenn die GPIO-Pins in der Zielverbindung als Ausgaben konfiguriert sind, wird das Statuselement auf STATUS_GPIO_OPERATION_DENIED festgelegt.
Hinweise
Diese Anforderung liest alle GPIO-Pins, die Teil der Zielverbindung sind, an die der Client die Anforderung sendet. Wenn die Verbindung beispielsweise über drei Pins verfügt, werden die 1-Bit-Werte, die von diesen Pins gelesen werden, in bits 0, 1 und 2 im Ausgabepuffer gespeichert. Die drei Pins in dieser Beispielverbindung können GPIO-Pins 7, 8 und 23 in der GPIO-Controllerhardware zugeordnet werden. Wenn ja, wird GPIO-Pin 7 in Bit 0 (das geringste signifikante Bit) des Puffers gespeichert, GPIO-Pin 8 in Bit 1 des Puffers und GPIO-Pin 23 in Bit 2 des Puffers gespeichert.
Wenn der Client eine Verbindung mit einem GPIO-Zielgerä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 sein, wenn es sich bei den Zielpins um Eingaben handelt.
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. Kernelmodustreiberframeworktreiber (KMDF) rufen die WdfIoTargetCreate-Methode auf, um diese Verbindung zu öffnen. UmDF-Treiber (User-Mode Driver Framework ) rufen die IWDFRemoteTarget::OpenFileByName-Methode auf, um die Verbindung zu öffnen.
Codebeispiele zur Verwendung der IOCTL_GPIO_READ_PINS-Anforderung zum Lesen einer Gruppe von GPIO-E/A-Pins finden Sie in den folgenden Themen:
Verbinden eines KMDF-Treibers mit GPIO-E/A-Pins
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Wird ab Windows 8 unterstützt. |
Kopfzeile | gpio.h |