Compartilhar via


Implementação do subsistema de energia e carregamento

O subsistema de energia e carregamento da bateria em uma plataforma Windows deve implementar a interface de Bateria do Método de Controle ACPI. O Windows usa essa interface para obter informações de status do subsistema da bateria e receber notificações de eventos da bateria.

Modelo de driver do subsistema de energia e bateria do Windows

O Windows apresenta um modelo robusto de driver de dispositivo de subsistema de energia e bateria. As informações de gerenciamento de energia são transmitidas ao gerenciador de energia do Windows por meio de um driver de dispositivo de bateria. Em seguida, essas informações são agregadas e expostas à interface do usuário do Windows por meio de IRPs de dispositivo de bateria e de um conjunto de APIs de software de gerenciamento de energia.

O modelo de driver de bateria para Windows é um modelo de porta/miniporta, ou seja, o modelo de bateria e as interfaces são definidos para que novos tipos de bateria possam ser expostos por meio de um driver de miniporta, conforme mostrado no diagrama de blocos a seguir. No entanto, na prática, apenas a interface de Bateria do Método de Controle ACPI é usada. Há suporte para um driver de miniporta de bateria de HID (dispositivo de interface humana) para dispositivos de UPS (fonte de alimentação ininterrupta) conectados por USB, mas esse driver não é usado para baterias do sistema.

Espera-se que todas as plataformas Windows exponham o respectivo subsistema de baterias e carregamento por meio da interface de Bateria do Método de Controle ACPI. A interface da miniporta da bateria não deve ser usada para subsistemas de carregamento de bateria específicos da plataforma. A especificação ACPI 5.0 define métodos de controle para permitir que o Windows obtenha informações sobre a bateria e o status atual. Além disso, a interface de ACPI fornece eventos para permitir que a plataforma de hardware notifique o Windows sobre alterações na bateria e na fonte de energia, como uma transição de uso de CA para uso da bateria.

Obter o status da bateria

O gerenciador de energia do Windows solicita periodicamente informações de status da bateria, incluindo a capacidade de carga restante e a taxa atual de esvaziamento. Essa solicitação tem origem no próprio gerenciador de energia, em um componente de alto nível da interface do usuário ou em um aplicativo. O gerenciador de energia transforma a solicitação em um IRP (pacote de solicitação de E/S) para o dispositivo de bateria, que é transformado no método de controle apropriado pelo driver de bateria do método de controle do Windows, o Cmbatt.sys. O método é executado e o resultado é retornado na pilha do driver.

No caso de informações de status, o método de status da bateria (_BST) é o método de controle apropriado. O método _BST requer que o firmware de ACPI obtenha as informações atuais do subsistema de energia. O resultado do método _BST é um buffer que contém as informações necessárias, que são retornadas ao driver de bateria do método de controle. O driver de bateria do método de controle converte o conteúdo do buffer no formato exigido pelo driver de bateria e pelo gerenciador de energia do Windows.

Notificações de alteração de estado

O subsistema de energia e bateria gera várias notificações ao sistema operacional com relação a alterações de estado, incluindo mudanças no nível de carga, transições de uso de CA para uso da bateria e assim por diante. Não é recomendado pesquisar continuamente essas alterações de estado porque isso requer uma frequência de pesquisa alta. Portanto, a plataforma de hardware deve implementar um modelo orientado a eventos para notificar o Windows sobre alterações no subsistema de energia e bateria.

Quando o status da bateria (incluindo a capacidade restante ou o status de carregamento) é alterado, o firmware de ACPI deve emitir um comando Notify(0x80) no dispositivo de Bateria do Método de Controle. Em resposta, o driver de Bateria do Método de Controle no Windows avalia o método _BST e retorna as informações atualizadas para o gerenciador de energia.

Quando os dados estáticos da bateria são alterados (incluindo a última capacidade de carga completa, a capacidade de design e a contagem de ciclos), o firmware de ACPI precisa emitir um comando Notify(0x81) no dispositivo de Bateria do Método de Controle. Em resposta, o driver de Bateria do Método de Controle no Windows avalia o método _BIX e retorna as informações atualizadas para o gerenciador de energia.

Os eventos de notificação de ACPI são sinalizados por meio da SCI (Interrupção de Controle do Sistema), no caso de plataformas equipadas com um controlador interno, ou por meio de GPIO (E/S de uso geral), no caso de plataformas com hardwares de subsistema de bateria conectados diretamente ao núcleo de silício.