Share via


Funções de retorno de chamada gpio opcionais e necessárias

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 gpioClx (extensão da estrutura GPIO). 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 implementadas pelo driver. O 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 não há suporte para uma função de retorno de chamada específica, o driver grava NULL no membro correspondente.

As seguintes funções de retorno de chamada 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 de 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 de retorno de chamada na seguinte lista:

CLIENT_ReadGpioPins ou CLIENT_ReadGpioPinsUsingMask CLIENT_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 xxx CLIENT_WriteGpioPinsna 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 retorno de chamada CLIENT_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 de 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 à 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 de chamada 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 forem fornecidas 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 elas 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 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 retorno de chamada CLIENT_PreProcessControllerInterrupt, CLIENT_ReconfigureInterrupt e CLIENT_ControllerSpecificFunction são opcionais e têm suporte do GpioClx para resolver problemas específicos de hardware em algumas implementações do controlador GPIO. Somente drivers de controlador GPIO com requisitos especiais implementam essas funções.