IOCTL_GPIO_READ_PINS IOCTL (gpio.h)
O código de controle de E/S de IOCTL_GPIO_READ_PINS permite que um cliente do controlador de E/S de uso geral (GPIO) leia a partir de um conjunto de pinos GPIO configurados como entradas. Normalmente, os clientes de um controlador GPIO são drivers para dispositivos periféricos que se conectam a pinos GPIO.
Código principal
Buffer de entrada
Nenhum buffer de entrada.
Comprimento do buffer de entrada
Nenhum.
Buffer de saída
O buffer de saída.
Comprimento do buffer de saída
O buffer de saída deve ser grande o suficiente para conter leituras de todos os pinos GPIO que fazem parte da conexão de destino para a qual o cliente envia a solicitação. Por exemplo, se o hardware do controlador GPIO implementar 64 pinos GPIO e o cliente abrir uma conexão com três desses pinos GPIO, um buffer de um byte será suficientemente grande para conter os três valores de 1 bit lidos dos três pinos na conexão.
Bloco de status
Se a operação for bem-sucedida, o driver do controlador GPIO definirá o membro Status como STATUS_SUCCESS e definirá o membro Information para o número total de bytes transferidos durante a operação solicitada. Se a operação transferir N bits, o número de bytes transferidos será (N + 7) /8. (Ou seja, 7 é adicionado a N para arredondar até o próximo limite de bytes antes da divisão inteiro por 8.)
Se essa solicitação falhar, o membro status do será definido como um código de erro e nenhum dado será lido dos pinos do GPIO. A operação solicitada pode falhar por vários motivos, que podem incluir entrada inválida do cliente, recursos baixos e mau funcionamento do dispositivo.
Se o buffer de saída não for grande o suficiente para conter os dados lidos de todos os pinos gpio na conexão de destino, o membro status do será definido como STATUS_BUFFER_TOO_SMALL. Se os pinos gpio na conexão de destino forem configurados como saídas, o membro status do será definido como STATUS_GPIO_OPERATION_DENIED.
Observações
Essa solicitação lê todos os pinos gpio que fazem parte da conexão de destino à qual o cliente envia a solicitação. Por exemplo, se a conexão tiver três pinos, os valores de 1 bit lido desses pinos serão salvos nos bits 0, 1 e 2 no buffer de saída. Os três pinos nesta conexão de exemplo podem ser mapeados para os pinos GPIO 7, 8 e 23 no hardware do controlador GPIO. Nesse caso, o pino 7 do GPIO é salvo no bit 0 (o bit menos significativo) do buffer, o pino 8 do GPIO é salvo no bit 1 do buffer e o pin 23 do GPIO é salvo no bit 2 do buffer.
Quando o cliente abre uma conexão com um dispositivo GPIO de destino, todos os pinos gpio nessa conexão são configurados como entradas ou como saídas. Uma solicitação IOCTL_GPIO_READ_PINS só poderá ser bem-sucedida se os pinos de destino forem entradas.
O cliente envia essa solicitação de controle de E/S para o objeto de arquivo do dispositivo de destino. O objeto de arquivo é uma estrutura FILE_OBJECT que representa uma conexão lógica com o destino. drivers KMDF ( de estrutura de driver no modo Kernel) chamam o método WdfIoTargetCreate para abrir essa conexão. drivers de de estrutura de driver do modo de usuário (UMDF) chamam o método IWDFRemoteTarget::OpenFileByName para abrir a conexão.
Para obter exemplos de código que mostram como usar a solicitação IOCTL_GPIO_READ_PINS para ler um conjunto de pinos de E/S gpio, consulte os seguintes tópicos:
conectar um driver KMDF a pinos de E/S gpio
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Com suporte a partir do Windows 8. |
cabeçalho | gpio.h |