Partager via


IOCTL_GPIO_READ_PINS IOCTL (gpio.h)

Le code de contrôle d’E/S IOCTL_GPIO_READ_PINS permet à un client du contrôleur d’E/S universel (GPIO) de lire à partir d’un ensemble de broches GPIO configurées en tant qu’entrées. En règle générale, les clients d’un contrôleur GPIO sont des pilotes pour les périphériques qui se connectent aux broches GPIO.

Code principal

IRP_MJ_DEVICE_CONTROL

Mémoire tampon d’entrée

Aucune mémoire tampon d’entrée.

Longueur de la mémoire tampon d’entrée

Aucun.

Mémoire tampon de sortie

Mémoire tampon de sortie.

Longueur de la mémoire tampon de sortie

La mémoire tampon de sortie doit être suffisamment grande pour contenir des lectures de toutes les broches GPIO qui font partie de la connexion cible à laquelle le client envoie la requête. Par exemple, si le matériel du contrôleur GPIO implémente 64 broches GPIO et que le client ouvre une connexion à trois de ces broches GPIO, une mémoire tampon d’un octet est suffisamment grande pour contenir les trois valeurs 1 bits lues à partir des trois broches de la connexion.

Bloc d’état

Si l’opération réussit, le pilote du contrôleur GPIO définit le membre status sur STATUS_SUCCESS et définit le membre Information sur le nombre total d’octets transférés pendant l’opération demandée. Si l’opération transfère N bits, le nombre d’octets transférés est (N + 7) / 8. (Autrement dit, 7 est ajouté à N pour arrondir à la limite d’octets suivante avant la division entière par 8.)

Si cette requête échoue, l’état membre est défini sur un code d’erreur et aucune donnée n’est lue à partir des broches GPIO. L’opération demandée peut échouer pour différentes raisons, ce qui peut inclure une entrée client non valide, des ressources faibles et un dysfonctionnement de l’appareil.

Si la mémoire tampon de sortie n’est pas suffisamment grande pour contenir les données lues à partir de toutes les broches GPIO dans la connexion cible, le membre Status est défini sur STATUS_BUFFER_TOO_SMALL. Si les broches GPIO dans la connexion cible sont configurées en tant que sorties, le membre Status est défini sur STATUS_GPIO_OPERATION_DENIED.

Remarques

Cette requête lit toutes les broches GPIO qui font partie de la connexion cible à laquelle le client envoie la requête. Par exemple, si la connexion a trois broches, les valeurs 1 bits lues à partir de ces broches sont enregistrées en bits 0, 1 et 2 dans la mémoire tampon de sortie. Les trois broches de cet exemple de connexion peuvent être mappées aux broches GPIO 7, 8 et 23 dans le matériel du contrôleur GPIO. Si c’est le cas, la broche GPIO 7 est enregistrée au bit 0 (le bit le moins significatif) de la mémoire tampon, la broche GPIO 8 est enregistrée dans le bit 1 de la mémoire tampon, et la broche GPIO 23 est enregistrée en bit 2 de la mémoire tampon.

Lorsque le client ouvre une connexion à un appareil GPIO cible, toutes les broches GPIO de cette connexion sont configurées en tant qu’entrées ou en tant que sorties. Une requête IOCTL_GPIO_READ_PINS peut réussir uniquement si les broches cibles sont des entrées.

Le client envoie cette demande de contrôle d’E/S à l’objet de fichier de l’appareil cible. L’objet fichier est une structure FILE_OBJECT qui représente une connexion logique à la cible. 'infrastructure de pilote en mode noyau (KMDF) appelle la méthode WdfIoTargetCreate pour ouvrir cette connexion. 'infrastructure de pilotes en mode utilisateur (UMDF) appelle la méthode IWDFRemoteTarget ::OpenFileByName pour ouvrir la connexion.

Pour obtenir des exemples de code qui montrent comment utiliser la requête IOCTL_GPIO_READ_PINS pour lire un ensemble de broches d’E/S GPIO, consultez les rubriques suivantes :

connexion d’un pilote KMDF à des broches d’E/S GPIO

Exigences

Exigence Valeur
client minimum pris en charge Prise en charge à partir de Windows 8.
d’en-tête gpio.h

Voir aussi

FILE_OBJECT

IWDFRemoteTarget ::OpenFileByName

WdfIoTargetCreate