IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION IOCTL (gpio.h)
Der IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION E/A-Steuerungscode ermöglicht es einem Client des GPIO-Controllers (Universelle E/A), einen controllerspezifischen Gerätesteuerungsvorgang anzufordern. In der Regel sind die Clients eines GPIO-Controllers Treiber für Peripheriegeräte, die eine Verbindung mit GPIO-Pins herstellen.
Hauptcode
Eingabepuffer
Die Eingabepufferanforderungen für diesen E/A-Steuerungscode werden vom Entwickler des GPIO-Controllertreibers definiert. Weitere Informationen zu Eingabepuffern für METHOD_BUFFERED IRPs finden Sie unter Pufferbeschreibungen für E/A-Steuerungscodes.
Ausgabepuffer
Die Ausgabepufferanforderungen für diesen E/A-Steuerungscode werden vom Entwickler des GPIO-Controllertreibers definiert. Weitere Informationen zu Ausgabepuffern für METHOD_BUFFERED IRPs finden Sie unter Pufferbeschreibungen für E/A-Steuerungscodes.
Statusblock
Wenn der Vorgang erfolgreich ist, legt der GPIO-Controllertreiber das Statuselement auf STATUS_SUCCESS fest und legt den Informationsmember auf die Gesamtzahl der in den Ausgabepuffer geschriebenen Bytes fest. Wenn ein Vorgang keine Ausgabedaten erzeugt oder der Ausgabedatenzeiger NULL ist, wird das Element Information auf 0 festgelegt.
Wenn der Eingabepuffer nicht groß genug ist, um die Eingabeparameter zu enthalten, oder wenn der Ausgabepuffer nicht groß genug ist, um die Ausgabeparameter für den controllerspezifischen Vorgang zu enthalten, wird der Statusmember auf STATUS_BUFFER_TOO_SMALL festgelegt.
Wenn diese Anforderung fehlschlägt, wird der Statusmember auf einen Fehlercode und das Element Information auf 0 festgelegt.
Wenn der GPIO-Controllertreiber keine controllerspezifischen Vorgänge unterstützt, wird das Statuselement auf STATUS_NOT_IMPLEMENTED festgelegt. Wenn der GPIO-Controllertreiber controllerspezifische Vorgänge unterstützt, aber den Inhalt des Eingabepuffers nicht als gültig erkennt, wird der Statusmember auf STATUS_NOT_SUPPORTED festgelegt.
Hinweise
Typische GPIO-Controller unterstützen keine IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION Anforderungen. Ein Controllertreiberentwickler hat jedoch die Möglichkeit, einen oder mehrere controllerspezifische Vorgänge zu definieren, um die besonderen Anforderungen oder Funktionen eines GPIO-Controllers auf einer bestimmten Hardwareplattform zu erfüllen.
Nur ein Peripheriegerätetreiber, der die controllerspezifischen Vorgänge kennt, die von einem bestimmten Typ von GPIO-Controllerhardware unterstützt werden, kann IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION Anforderungen verwenden, um diese Vorgänge auszuführen. Ein Peripheriegerätetreiber, der diese Anforderungen verwendet, um controllerspezifische Vorgänge auf einer Hardwareplattform auszuführen, riskiert den Verlust der Kompatibilität mit anderen Plattformen, die diese Vorgänge nicht unterstützen.
Die Bedeutung des IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION-Steuerelementcodes wird vom Entwickler des GPIO-Controllertreibers definiert. In der Regel verwendet der Controllertreiber diesen Steuercode, um Peripheriegerätetreibern die Ausführung hardwarespezifischer Vorgänge an den GPIO-Pins zu ermöglichen, mit denen ihre Geräte verbunden sind.
Beispielsweise kann der Eingabepuffer für die IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION-Anforderung einen vom Controller definierten Befehlscode und eine bestimmte Anzahl von Eingabeparametern enthalten. Je nach Befehlscode schreibt der GPIO-Controllertreiber möglicherweise Daten in den Ausgabepuffer.
Der Treiber für Peripheriegeräte sendet diese E/A-Steuerungsanforderung an das Dateiobjekt für das GPIO-Zielgerät. Das Dateiobjekt ist eine FILE_OBJECT-Struktur , die eine offene Verbindung mit einer Reihe von Pins auf dem GPIO-Controller darstellt. Kernelmodustreiberframeworktreiber (KMDF) verwenden ein WDFIOTARGET-Handle, um auf dieses Dateiobjekt zu verweisen.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Wird ab Windows 8 unterstützt. |
Kopfzeile | gpio.h |