Avaliando métodos de controle ACPI
Um método de controle ACPI (Advanced Configuration and Power Interface) é um software que declara e define operações para consultar e configurar o hardware do sistema. Um sistema compatível com ACPI fornece um conjunto mínimo de métodos de controle. Os métodos de controle são escritos na ASL (Linguagem de Origem) da ACPI, compiladas por um compilador ASL no AML (Linguagem de Máquina) ACPI, carregadas do firmware do sistema no namespace acPI e interpretadas pelo driver ACPI.
Os drivers de dispositivo no modo kernel que estão em conformidade com os requisitos da KMDF (Estrutura de Driver do Modo Kernel) ou do WDM (Modelo de Driver do Windows) podem avaliar os métodos de controle acPI usando solicitações de controle de dispositivo. Começando com Windows 8, os drivers de modo de usuário que estão em conformidade com os requisitos do UMDF (User-Mode Driver Framework) podem usar solicitações de controle de dispositivo para avaliar métodos de controle ACPI. Normalmente, um driver avalia os métodos de controle ACPI para iniciar ou configurar funções específicas da plataforma. Um driver pode avaliar métodos de controle ACPI dentro do namespace do PDO (objeto de dispositivo físico) para o qual ele é carregado. Para drivers carregados na pilha de dispositivos de um dispositivo enumerado por ACPI, o driver ACPI é sempre o driver de barramento que criou e opera o PDO na pilha do dispositivo. Essa funcionalidade inclui a avaliação de métodos de controle compatíveis com objetos filho descendentes de um dispositivo pai.
Um driver avalia os métodos de controle enviando uma das solicitações de IRP_MJ_DEVICE_CONTROL a seguir para um dispositivo.
-
Essa solicitação avalia de forma síncrona um método de controle compatível com o dispositivo para o qual a solicitação é enviada. Para usar esse IOCTL, um driver para o dispositivo fornece buffers de argumento de método de entrada e saída, o nome de um método e um objeto de evento que aguarda a conclusão da solicitação. O método deve ser um objeto filho imediato no namespace ACPI do dispositivo para o qual a solicitação é enviada.
-
Essa solicitação avalia de forma assíncrona um método de controle compatível com o dispositivo para o qual a solicitação é enviada. Para usar esse IOCTL, um driver para o dispositivo fornece buffers de argumento de método de entrada e saída, o nome de um método e uma rotina de IoCompletion que o gerente de E/S chama depois que todos os drivers de nível inferior concluíram a solicitação. O método deve ser um objeto filho imediato no namespace ACPI do dispositivo para o qual a solicitação é enviada.
-
Essa solicitação avalia de forma síncrona um método de controle compatível com o dispositivo ou um objeto filho descendente do dispositivo para o qual a solicitação é enviada. Para usar esse IOCTL, um driver para o dispositivo fornece buffers de argumento de método de entrada e saída, o caminho e o nome do método de controle no namespace ACPI do dispositivo e um objeto de evento que aguarda a conclusão da solicitação.
IOCTL_ACPI_ASYNC_EVAL_METHOD_EX
Essa solicitação avalia de forma assíncrona um método de controle compatível com o dispositivo ou um objeto filho descendente do dispositivo para o qual a solicitação é enviada. Para usar esse IOCTL, um driver para o dispositivo fornece buffers de argumento de método de entrada e saída, o caminho e o nome do método de controle no namespace ACPI do dispositivo e uma rotina de IoCompletion que o gerente de E/S chama depois que todos os drivers de nível inferior concluíram a solicitação.
Para obter mais informações sobre como avaliar métodos de controle ACPI de forma síncrona, consulte Avaliando métodos de controle ACPI de forma síncrona. Para obter mais informações sobre como avaliar métodos de controle ACPI de forma assíncrona, consulte IOCTL_ACPI_ASYNC_EVAL_METHOD e IOCTL_ACPI_ASYNC_EVAL_METHOD_EX.
Para que um driver de um dispositivo avalie um método de controle que não seja um objeto filho imediato do dispositivo, o driver deve fornecer o caminho e o nome do método no namespace ACPI do dispositivo. Para ajudar a obter o caminho e o nome dos objetos filho de um dispositivo, o Windows dá suporte à solicitação IOCTL_ACPI_ENUM_CHILDREN , que um driver para um dispositivo pode usar para enumerar o seguinte:
O dispositivo e seus dispositivos filho imediatos.
O dispositivo e todos os seus dispositivos filho descendentes.
Objetos filho descendentes de um nome fornecido no namespace ACPI do dispositivo, incluindo, em particular, métodos de controle.
Para obter informações sobre como enumerar dispositivos e métodos no namespace de um dispositivo, consulte Enumerando dispositivos filho e métodos de controle.
Para obter informações sobre macros fornecidas pelo sistema que um driver pode usar para ajudar a avaliar métodos de controle, consulte Macros de método de controle.
Para obter mais informações sobre dispositivos ACPI, métodos de controle e namespaces, consulte Configuração Avançada e Especificação da Interface de Energia.