Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Um driver de controlador de E/S de uso geral (GPIO) chama o método GPIO_CLX_RegisterClient para se registrar como um cliente da extensão da estrutura GPIO (GpioClx). Durante essa chamada, o driver passa um pacote de registro para GpioClx que especifica uma lista de funções de retorno de chamada de evento que são implementadas pelo driver. GpioClx chama essas funções de retorno de chamada para configurar o hardware do controlador GPIO, executar operações de E/S e gerenciar interrupções. GpioClx requer um driver de controlador GPIO para implementar determinadas funções de retorno de chamada, mas o suporte para outras funções de retorno de chamada é opcional.
O pacote de registro é uma estrutura GPIO_CLIENT_REGISTRATION_PACKET . Se o driver do controlador GPIO implementar uma função de retorno de chamada específica, ele gravará o ponteiro de função nessa função de retorno de chamada no membro correspondente dessa estrutura. Ou, para indicar que uma função de callback específica não tem suporte, o driver grava NULL no membro correspondente.
As seguintes funções de callback devem ser incluídas no pacote de registro:
CLIENT_PrepareControllerCLIENT_QueryControllerBasicInformationCLIENT_StartControllerCLIENT_StopControllerCLIENT_ReleaseController Se alguma função de retorno de chamada na lista anterior estiver ausente (ou seja, se o ponteiro de função correspondente no pacote de registro for NULL), o método GPIO_CLX_RegisterClient falhará.
Um driver de controlador GPIO não é necessário para dar suporte à leitura ou gravação em pinos de E/S do GPIO, que são pinos configurados como entradas de dados ou saídas de dados. (Um controlador GPIO sem pinos de E/S ainda pode retransmitir solicitações de interrupção de dispositivos periféricos.) No entanto, se o pacote de registro incluir uma das seguintes funções de retorno de chamada relacionadas a E/S, o pacote deverá incluir ambas as seguintes funções de retorno de chamada:
CLIENT_ConnectIoPinsCLIENT_DisconnectIoPins Além disso, se o pacote de registro incluir as duas funções de retorno de chamada na lista anterior, o driver deverá dar suporte adicional à leitura de pinos de E/S gpio, gravação em pinos de E/S gpio ou ambos. Especificamente, o pacote de registro deve incluir pelo menos uma função callback na seguinte lista:
CLIENT_ReadGpioPins ou CLIENT_ReadGpioPinsUsingMaskCLIENT_WriteGpioPins ou CLIENT_WriteGpioPinsUsingMask Um driver que dá suporte a leituras deve implementar uma das duas funções de retorno de chamada xxx CLIENT_ReadGpioPinsna lista anterior. Um driver que dá suporte a gravações deve implementar uma das duas funções de retorno de chamada CLIENT_WriteGpioPinsXxx na lista anterior.
Um driver que implementa CLIENT_ReadGpioPinsUsingMask, CLIENT_WriteGpioPinsUsingMask ou ambos, deve definir o bit de sinalizador FormatIoRequestsAsMasks nas informações do dispositivo fornecidas pela função de retornoCLIENT_QueryControllerBasicInformation. Um driver que implementa CLIENT_ReadGpioPins, CLIENT_WriteGpioPins ou ambos, não deve definir esse bit de sinalizador. Para obter mais informações, consulte a descrição do membro Flags no CLIENT_CONTROLLER_BASIC_INFORMATION.
Um driver do controlador GPIO não é necessário para dar suporte a interrupções de GPIO. No entanto, se o pacote de registro incluir qualquer uma das seguintes funções de retorno de chamada relacionadas à interrupção, o pacote deverá incluir todas as seguintes funções de retorno de chamada:
CLIENT_EnableInterruptCLIENT_DisableInterruptCLIENT_MaskInterruptsCLIENT_QueryActiveInterruptsCLIENT_UnmaskInterrupt Um driver que dá suporte ao mascaramento de interrupções deve implementar a função de retorno de chamada CLIENT_MaskInterrupts. Um driver que dá suporte à consulta de interrupções ativas deve implementar a função de retorno de chamada CLIENT_QueryActiveInterrupts.
A função de retorno CLIENT_ClearActiveInterrupts é um caso especial. Se o hardware do controlador GPIO limpar automaticamente as interrupções ativas quando elas forem lidas, a função CLIENT_ClearActiveInterrupts não será necessária e o ponteiro de função correspondente no pacote de registro deverá ser definido como NULL. No entanto, se as interrupções ativas não forem limpas automaticamente quando forem lidas, e se as funções de retorno de chamada relacionadas à interrupção na lista anterior estiverem incluídas no pacote de registro, a função CLIENT_ClearActiveInterrupts deverá ser incluída no pacote. Para indicar que o hardware limpa automaticamente as interrupções ativas quando são lidas, o driver define o bit de sinalizador ActiveInterruptsAutoClearOnRead nas informações do dispositivo fornecidas pela função de retorno de chamada CLIENT_QueryControllerBasicInformation. Para obter mais informações, consulte a descrição do membro Flags no CLIENT_CONTROLLER_BASIC_INFORMATION.
Se o driver do controlador GPIO der suporte a interrupções de GPIO, o pacote de registro poderá, como opção, incluir a seguinte função de retorno de chamada:
CLIENT_QueryEnabledInterrupts O GpioClx dá suporte à função CLIENT_QueryEnabledInterrupts começando com o Windows 8.1.
Um driver que dá suporte ao gerenciamento de energia no nível do componente deve implementar ambas as seguintes funções de retorno de chamada:
CLIENT_RestoreBankHardwareContextCLIENT_SaveBankHardwareContext Para indicar que o hardware dá suporte ao gerenciamento de energia no nível do componente, o driver define o bit de sinalizador BankIdlePowerMgmtSupported nas informações do dispositivo fornecidas pela função de retorno de chamada CLIENT_QueryControllerBasicInformation. Para obter mais informações, consulte a descrição do membro Flags no CLIENT_CONTROLLER_BASIC_INFORMATION.
As funções de callback CLIENT_PreProcessControllerInterrupt, CLIENT_ReconfigureInterrupt e CLIENT_ControllerSpecificFunction são opcionais e são suportadas pelo GpioClx para solucionar problemas específicos de hardware em algumas implementações do controlador GPIO. Somente drivers de controlador GPIO com requisitos especiais implementam essas funções.