Compartir a través de


IOCTL_GPIO_READ_PINS IOCTL (gpio.h)

El IOCTL_GPIO_READ_PINS código de control de E/S permite que un cliente del controlador de E/S de uso general (GPIO) lea desde un conjunto de patillas GPIO configuradas como entradas. Normalmente, los clientes de un controlador GPIO son controladores para dispositivos periféricos que se conectan a patillas GPIO.

Código principal

IRP_MJ_DEVICE_CONTROL

Búfer de entrada

Sin búfer de entrada.

Longitud del búfer de entrada

Ninguno.

Búfer de salida

Búfer de salida.

Longitud del búfer de salida

El búfer de salida debe ser lo suficientemente grande como para contener lecturas de todas las patillas GPIO que forman parte de la conexión de destino a la que el cliente envía la solicitud. Por ejemplo, si el hardware del controlador GPIO implementa 64 patillas GPIO y el cliente abre una conexión a tres de estos patillas GPIO, un búfer de un byte es lo suficientemente grande para contener los tres valores de 1 bits que se leen de las tres patillas de la conexión.

Bloque de estado

Si la operación se realiza correctamente, el controlador del controlador GPIO establece el miembro Status en STATUS_SUCCESS y establece el miembro Information en el número total de bytes transferidos durante la operación solicitada. Si la operación transfiere N bits, el número de bytes transferidos es (N + 7) / 8. (Es decir, 7 se agrega a N para redondear hasta el siguiente límite de bytes antes de la división de enteros en 8).

Si se produce un error en esta solicitud, el miembro Status se establece en un código de error y no se lee ningún dato de las patillas GPIO. Es posible que se produzca un error en la operación solicitada por diversos motivos, lo que puede incluir una entrada de cliente no válida, recursos bajos y un funcionamiento incorrecto del dispositivo.

Si el búfer de salida no es lo suficientemente grande como para contener los datos que se leen de todas las patillas GPIO en la conexión de destino, el miembro Status se establece en STATUS_BUFFER_TOO_SMALL. Si las patillas GPIO de la conexión de destino se configuran como salidas, el miembro Status se establece en STATUS_GPIO_OPERATION_DENIED.

Comentarios

Esta solicitud lee todas las patillas GPIO que forman parte de la conexión de destino a la que el cliente envía la solicitud. Por ejemplo, si la conexión tiene tres patillas, los valores de 1 bits que se leen de estas patillas se guardan en bits 0, 1 y 2 en el búfer de salida. Los tres pines de esta conexión de ejemplo podrían asignarse a patillas GPIO 7, 8 y 23 en el hardware del controlador GPIO. Si es así, el pin GPIO 7 se guarda en el bit 0 (el bit menos significativo) del búfer, el pin GPIO 8 se guarda en el bit 1 del búfer y el pin GPIO 23 se guarda en el bit 2 del búfer.

Cuando el cliente abre una conexión a un dispositivo GPIO de destino, todas las patillas GPIO de esta conexión se configuran como entradas o como salidas. Una solicitud de IOCTL_GPIO_READ_PINS solo puede realizarse correctamente si las patillas de destino son entradas.

El cliente envía esta solicitud de control de E/S al objeto de archivo del dispositivo de destino. El objeto de archivo es una estructura FILE_OBJECT que representa una conexión lógica con el destino. Los controladores del marco de controladores en modo kernel (KMDF) llaman al método WdfIoTargetCreate para abrir esta conexión. Los controladores del marco de controladores en modo de usuario (UMDF) llaman al método IWDFRemoteTarget::OpenFileByName para abrir la conexión.

Para obtener ejemplos de código que muestran cómo usar la solicitud de IOCTL_GPIO_READ_PINS para leer un conjunto de patillas de E/S de GPIO, consulte los temas siguientes:

Conexión de un controlador KMDF a patillas de E/S de GPIO

Requisitos

Requisito Value
Cliente mínimo compatible Se admite a partir de Windows 8.
Encabezado gpio.h

Consulte también

FILE_OBJECT

IWDFRemoteTarget::OpenFileByName

WdfIoTargetCreate