Partilhar via


Acpi.sys (driver ACPI do Windows)

O driver ACPI (Advanced Configuration and Power Interface) do Windows, Acpi.sys, é um componente da caixa de entrada do sistema operacional Windows. As responsabilidades de Acpi.sys incluem suporte para gerenciamento de energia e enumeração de dispositivos Plug and Play (PnP). Em plataformas de hardware que possuem um BIOS ACPI, o HAL faz com que Acpi.sys seja carregado na base da árvore de dispositivos durante a inicialização do sistema. Acpi.sys atua como a interface entre o sistema operacional e o BIOS ACPI. Acpi.sys é transparente para os outros drivers na árvore de dispositivos.

Outras tarefas executadas por Acpi.sys em uma plataforma de hardware específica podem incluir a reprogramação dos recursos para uma porta COM ou a ativação do controlador USB para ativação do sistema.

Dispositivos ACPI

O fornecedor da plataforma de hardware especifica uma hierarquia de namespaces ACPI no BIOS ACPI para descrever a topologia de hardware da plataforma. Para obter mais informações, consulte Hierarquia de namespace ACPI.

Para cada dispositivo descrito na hierarquia de namespace ACPI, o driver ACPI do Windows, Acpi.sys, cria um objeto de dispositivo de filtro (filter DO) ou um objeto de dispositivo físico (PDO). Se o dispositivo estiver integrado na placa do sistema, Acpi.sys cria um objeto de dispositivo de filtro, representando um filtro de barramento ACPI, e conecta-o à pilha de dispositivos imediatamente acima do controlador de barramento (PDO). Para outros dispositivos descritos no namespace ACPI, mas não na placa do sistema, Acpi.sys cria o PDO. Acpi.sys proporciona gestão de energia e funcionalidades PnP para o stack de dispositivos com estes objetos de dispositivo. Para obter mais informações, consulte Pilhas de dispositivos para um dispositivo ACPI.

Um dispositivo para o qual Acpi.sys cria um objeto de dispositivo é chamado de dispositivo ACPI. O conjunto de dispositivos ACPI varia de uma plataforma de hardware para outra, e depende do BIOS ACPI e da configuração da placa-mãe. Acpi.sys carrega um filtro de barramento ACPI somente para um dispositivo descrito no namespace ACPI e permanentemente conectado à plataforma de hardware (normalmente, esse dispositivo é integrado ao silício central ou soldado à placa do sistema). Nem todos os dispositivos de placa-mãe têm um filtro de barramento ACPI.

Todas as funcionalidades ACPI são transparentes para drivers de nível superior. Esses drivers não devem fazer suposições sobre a presença ou ausência de um filtro ACPI em nenhuma pilha de dispositivos.

Acpi.sys e o BIOS ACPI suportam as funções básicas de um dispositivo ACPI. Para melhorar a funcionalidade de um dispositivo ACPI, o fornecedor do dispositivo pode fornecer um driver de função WDM. Para obter mais informações, consulte Operação de um driver de função de dispositivo ACPI.

Um dispositivo ACPI é especificado por um bloco de definição nas tabelas de descrição do sistema no BIOS ACPI. O bloco de definição de um dispositivo especifica, entre outras coisas, uma região de operação, que é um bloco contíguo de memória do dispositivo que é usado para acessar os dados do dispositivo. Somente Acpi.sys modifica os dados em uma região de operação. O driver de função do dispositivo pode ler os dados em uma região de operação, mas não deve modificar os dados. Quando chamado, um manipulador de região de operação transfere bytes na região de operação de e para o buffer de dados em Acpi.sys. A operação combinada do driver de função e do Acpi.sys é específica do dispositivo e é definida no BIOS ACPI pelo fornecedor do hardware. Em geral, o driver da função e o Acpi.sys acessam áreas específicas em uma região de operações para executar operações específicas do dispositivo e recuperar informações. Para obter mais informações, consulte Suporte a uma região de operação.

Métodos de controlo ACPI

Os métodos de controle ACPI são objetos de software que declaram e definem operações simples para consultar e configurar dispositivos ACPI. Os métodos de controle são armazenados no BIOS ACPI e são codificados em um formato de código de bytes chamado ACPI machine language (AML). Os métodos de controle para um dispositivo são carregados do firmware do sistema para o namespace ACPI do dispositivo na memória e interpretados pelo driver ACPI do Windows, Acpi.sys.

Para invocar um método de controle, o driver de modo kernel para um dispositivo ACPI inicia uma solicitação de IRP_MJ_DEVICE_CONTROL , que é manipulada por Acpi.sys. Para drivers operando em dispositivos enumerados pelo ACPI, Acpi.sys sempre implementa o objeto de dispositivo físico (PDO) na pilha de drivers. Para obter mais informações, consulte Avaliando métodos de controle ACPI.

Especificação ACPI

A Advanced Configuration and Power Interface Specification (especificação ACPI 6.4) está disponível no site do Unified Extensible Firmware Interface Forum.

A revisão 5.0 da especificação ACPI introduz um conjunto de funcionalidades para apoiar PCs móveis de pouca potência, baseados em circuitos integrados de Sistema em Chip (SoC) e que implementam o modelo de gestão de energia de standby conectado. A partir do Windows 8, o driver ACPI do Windows, Acpi.sys, suporta os novos recursos na especificação ACPI 5.0. Para obter mais informações, consulte Guia de design ACPI do Windows para plataformas SoC.

Depuração ACPI

Integradores de sistema e desenvolvedores de driver de dispositivo ACPI podem usar o depurador Microsoft AMLI para depurar o código AML. Como a AML é uma linguagem interpretada, a depuração de AML requer ferramentas de software especiais.

Para obter mais informações sobre o depurador AMLI, consulte Depuração ACPI.

Compilador de linguagem de origem (ASL) ACPI da Microsoft

Para obter informações sobre como compilar ACPI source language (ASL) em ACPI machine language (AML), consulte Microsoft ASL compiler.

Versão 5.0 do compilador Microsoft ASL suporta recursos na especificação ACPI 5.0.

O compilador ASL é distribuído com o Windows Driver Kit (WDK).

O compilador ASL (asl.exe) está localizado na Tools\<build>\<architecture>\ACPIVerify pasta do WDK instalado, por exemplo, C:\Program Files (x86)\Windows Kits\10\Tools\10.0.22631.0\x64.