Acpi.sys (driver ACPI do Windows)

O driver ACPI do Windows, Acpi.sys, é um componente de caixa de entrada do sistema operacional Windows. As responsabilidades de Acpi.sys incluem suporte para gerenciamento de energia e enumeração de dispositivo PnP (Plug and Play). Em plataformas de hardware que têm um BIOS ACPI, o HAL faz com que Acpi.sys sejam carregados durante a inicialização do sistema na base da árvore de dispositivos. Acpi.sys atua como a interface entre o sistema operacional e o BIOS da 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 habilitação do controlador USB para ativação do sistema.

Neste tópico

Dispositivos ACPI

O fornecedor da plataforma de hardware especifica uma hierarquia de namespaces acpi no BIOS da 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 PDO (objeto de dispositivo físico). Se o dispositivo estiver integrado à placa do sistema, Acpi.sys criará um objeto de dispositivo de filtro, representando um filtro de barramento ACPI e o anexará à pilha do dispositivo imediatamente acima do PDO (driver de barramento). Para outros dispositivos descritos no namespace ACPI, mas não no quadro do sistema, Acpi.sys cria o PDO. Acpi.sys fornece gerenciamento de energia e recursos PnP para a pilha de dispositivos com esses 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 da 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 está permanentemente conectado à plataforma de hardware (normalmente, esse dispositivo é integrado ao silício principal ou vendido à placa do sistema). Nem todos os dispositivos de placa-mãe têm um filtro de barramento ACPI.

Todas as funcionalidades de 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 uma determinada pilha de dispositivos.

Acpi.sys e o BIOS da ACPI dão suporte às funções básicas de um dispositivo ACPI. Para aprimorar 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 da 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 usado para acessar 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 no Acpi.sys. A operação combinada do driver de função e Acpi.sys é específica do dispositivo e é definida no BIOS da ACPI pelo fornecedor de hardware. Em geral, o driver de função e Acpi.sys acessar áreas específicas em uma região de operação 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 controle ACPI

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 da ACPI e são codificados em um formato de código de byte chamado AML (linguagem de computador) ACPI. Os métodos de controle de um dispositivo são carregados do firmware do sistema no 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 do modo kernel para um dispositivo ACPI inicia uma solicitação de IRP_MJ_DEVICE_CONTROL , que é tratada por Acpi.sys. Para drivers carregados em dispositivos enumerados por ACPI, Acpi.sys sempre implementa o PDO (objeto de dispositivo físico) na pilha de driver. Para obter mais informações, consulte Avaliando métodos de controle ACPI.

Especificação de ACPI

A Especificação avançada da configuração e da interface de energia (especificação do ACPI 5.0) está disponível no site do Unified Extensible Firmware Interface Forum.

A revisão 5.0 da especificação de ACPI apresenta um conjunto de recursos para dar suporte a computadores móveis de baixa potência baseados em circuitos integrados do SoC (System on Chip) e que implementam o modelo de energia em espera conectado . Começando com Windows 8 e versões posteriores, o driver ACPI do Windows, Acpi.sys, dá suporte aos novos recursos na especificação ACPI 5.0. Para obter mais informações, consulte Guia de design de ACPI do Windows para plataformas SoC.

Depuração de ACPI

Os integradores do sistema e os desenvolvedores de driver de dispositivo ACPI podem usar o depurador do Microsoft AMLI para depurar o código AML. Como o 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 de ACPI.

Compilador de ASL (linguagem de origem) do Microsoft ACPI

Para obter informações sobre como compilar ASL (linguagem de origem ACPI) no AML (linguagem de computador) ACPI, consulte Compilador do Microsoft ASL.

A versão 5.0 do compilador do Microsoft ASL dá suporte a recursos na especificação ACPI 5.0.

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

O compilador ASL (asl.exe) está localizado nos diretórios Tools\arm\ACPIVerify, Tools\arm64\ACPIVerify, Tools\x86\ACPIVerify e Tools\x64\ACPIVerify do WDK instalado, por exemplo, C:\Program Files (x86)\Windows Kits\10\Tools\x86\ACPIVerify.