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 à usage général (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 à des 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 les lectures de toutes les broches GPIO qui font partie de la connexion cible à laquelle le client envoie la demande. 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 demande échoue, le membre Status 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, notamment 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 assez grande pour contenir les données lues à partir de toutes les broches GPIO de la connexion cible, le membre Status est défini sur STATUS_BUFFER_TOO_SMALL. Si les broches GPIO de 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 dans le 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 sorties. Une demande de 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 fichier de l’appareil cible. L’objet file est une structure FILE_OBJECT qui représente une connexion logique à la cible. Les pilotes KMDF (Kernel-Mode Driver Framework) appellent la méthode WdfIoTargetCreate pour ouvrir cette connexion. Les pilotes UMDF (User-Mode Driver Framework) appellent la méthode IWDFRemoteTarget ::OpenFileByName pour ouvrir la connexion.

Pour obtenir des exemples de code qui montrent comment utiliser la demande 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

Configuration requise

Condition requise Valeur
Client minimal pris en charge Pris en charge à partir de Windows 8.
En-tête gpio.h

Voir aussi

FILE_OBJECT

IWDFRemoteTarget ::OpenFileByName

WdfIoTargetCreate