IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION IOCTL (gpio.h)
O código de controle de E/S IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION permite que um cliente do controlador de E/S de uso geral (GPIO) solicite uma operação de controle de dispositivo específica do controlador. 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
Os requisitos de buffer de entrada para esse código de controle de E/S são definidos pelo desenvolvedor do driver do controlador GPIO. Para obter mais informações sobre buffers de entrada para METHOD_BUFFERED IRPs, consulte Descrições de buffer para códigos de controle de E/S.
Buffer de saída
Os requisitos de buffer de saída para esse código de controle de E/S são definidos pelo desenvolvedor do driver do controlador GPIO. Para obter mais informações sobre buffers de saída para METHOD_BUFFERED IRPs, consulte Descrições de buffer para códigos de controle de E/S.
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 Informações como o número total de bytes gravados no buffer de saída. Se uma operação não produzir dados de saída ou o ponteiro de dados de saída for NULL, o membro Informações será definido como zero.
Se o buffer de entrada não for grande o suficiente para conter os parâmetros de entrada ou o buffer de saída não for grande o suficiente para conter os parâmetros de saída para a operação específica do controlador, o membro Status será definido como STATUS_BUFFER_TOO_SMALL.
Se essa solicitação falhar, o membro Status será definido como um código de erro e o membro Informações será definido como zero.
Se o driver do controlador GPIO não der suporte a operações específicas do controlador, o membro Status será definido como STATUS_NOT_IMPLEMENTED. Se o driver do controlador GPIO der suporte a operações específicas do controlador, mas não reconhecer o conteúdo do buffer de entrada como válido, o membro Status será definido como STATUS_NOT_SUPPORTED.
Comentários
Os controladores GPIO típicos não dão suporte a solicitações de IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION . No entanto, um desenvolvedor de driver de controlador tem a opção de definir uma ou mais operações específicas do controlador para atender aos requisitos especiais ou funcionalidades de um controlador GPIO em uma plataforma de hardware específica.
Somente um driver de dispositivo periférico que esteja ciente das operações específicas do controlador compatíveis com um tipo específico de hardware do controlador GPIO pode usar IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION solicitações para executar essas operações. Um driver de dispositivo periférico que usa essas solicitações para executar operações específicas do controlador em uma plataforma de hardware corre o risco de perder a compatibilidade com outras plataformas que não dão suporte a essas operações.
O significado do código de controle IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION é definido pelo desenvolvedor do driver do controlador GPIO. Normalmente, o driver do controlador usa esse código de controle para permitir que drivers de dispositivos periféricos executem operações específicas de hardware nos pinos gpio aos quais seus dispositivos estão conectados.
Por exemplo, o buffer de entrada para a solicitação de IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION pode conter um código de comando definido pelo controlador e alguns parâmetros de entrada. O driver do controlador GPIO pode ou não gravar dados no buffer de saída, dependendo do código de comando.
O driver de dispositivo periférico envia essa solicitação de controle de E/S para o objeto de arquivo para o dispositivo GPIO de destino. O objeto de arquivo é uma estrutura FILE_OBJECT que representa uma conexão aberta com um conjunto de pinos no controlador GPIO. Os drivers KMDF (estrutura de driver do modo kernel) usam um identificador WDFIOTARGET para se referir a esse objeto de arquivo.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Com suporte a partir do Windows 8. |
Cabeçalho | gpio.h |