IOCTL_GPIO_WRITE_PINS IOCTL (gpio.h)

Der IOCTL_GPIO_WRITE_PINS E/A-Steuerungscode ermöglicht es einem Client des GPIO-Controllers (Universelle E/A), in einen Satz von GPIO-Pins zu schreiben, die als Ausgaben 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

Der Eingabepuffer.

Länge des Eingabepuffers

Der Eingabepuffer sollte groß genug sein, um Daten für alle 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 zum Schreiben in die drei Pins in der Verbindung zu enthalten.

Ausgabepuffer

Der Ausgabepuffer enthält die gleichen Daten wie der Eingabepuffer (da der TransferType für diese IOCTL METHOD_BUFFERED ist).

Länge des Ausgabepuffers

Identisch mit dem Eingabepuffer.

Statusblock

Wenn der Vorgang erfolgreich ist, legt der Controllertreiber den Status-Member auf STATUS_SUCCESS und das Information-Element 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 zu N hinzugefügt, um auf die nächste Bytegrenze vor der ganzzahligen Division durch 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, z. B. ungültige Clienteingaben, geringe Ressourcen und Gerätefehler.

Wenn der Eingabepuffer nicht groß genug ist, um für jeden GPIO-Pin in der Zielverbindung ein Datenbit zu enthalten, wird das Statuselement auf STATUS_BUFFER_TOO_SMALL festgelegt. Wenn die GPIO-Pins in der Zielverbindung als Eingaben konfiguriert sind, wird das Statuselement auf STATUS_GPIO_OPERATION_DENIED festgelegt.

Hinweise

Diese Anforderung schreibt in 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 Bits 0, 1 und 2 aus dem Eingabepuffer an diese drei Pins geschrieben. Die drei Pins in dieser Beispielverbindung können den GPIO-Pins 7, 8 und 23 in der GPIO-Controllerhardware zugeordnet werden. Wenn ja, wird Bit 0 (das am wenigsten signifikante Bit) im Puffer in GPIO-Pin 7 geschrieben, Bit 1 im Puffer wird in GPIO-Pin 8 geschrieben, und Bit 2 im Puffer wird in GPIO-Pin 23 geschrieben.

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_WRITE_PINS Anforderung kann nur erfolgreich sein, wenn die Zielpins Ausgaben sind.

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

Codebeispiele zum Verwenden der IOCTL_GPIO_WRITE_PINS-Anforderung zum Schreiben in eine 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) Unterstützt ab Windows 8.
Kopfzeile gpio.h

Weitere Informationen

FILE_OBJECT

IWDFRemoteTarget::OpenFileByName

WdfIoTargetCreate