Поделиться через


Оценка методов управления ACPI

Метод управления Advanced Configuration and Power Interface (ACPI) — это программное обеспечение, которое объявляет и определяет операции для запроса и настройки оборудования системы. Система, совместимая с ACPI, предоставляет минимальный набор методов управления. Методы управления записываются на языке источника ACPI (ASL), компилируются компилятором ASL на машинный язык ACPI (AML), загружаются из встроенного ПО системы в пространство имен ACPI и интерпретируются драйвером ACPI.

Драйверы устройств в режиме ядра, которые соответствуют требованиям платформы драйвера в режиме ядра (KMDF) или модели драйвера Windows (WDM), могут оценивать методы управления ACPI с помощью запросов на управление устройством. Начиная с Windows 8, драйверы пользовательского режима, соответствующие требованиям среда выполнения платформы драйвера режима пользователя (UMDF), могут использовать запросы управления устройствами для оценки методов управления ACPI. Как правило, драйвер оценивает методы управления ACPI для запуска или настройки функций, зависящих от платформы. Драйвер может оценивать методы управления ACPI в пространстве имен объекта физического устройства (PDO ), для которого он загружен. Для драйверов, загруженных в стек устройств устройства с перечислением ACPI, драйвер ACPI всегда является драйвером шины, который создал PDO в стеке устройств и управляет им. Эта возможность включает оценку методов управления, поддерживаемых дочерними объектами, которые являются потомками родительского устройства.

Драйвер оценивает методы управления, отправляя на устройство один из следующих запросов IRP_MJ_DEVICE_CONTROL .

  • IOCTL_ACPI_EVAL_METHOD

    Этот запрос синхронно оценивает метод управления, поддерживаемый устройством, на которое отправляется запрос. Чтобы использовать этот IOCTL, драйвер для устройства предоставляет буферы аргументов метода ввода и вывода, имя метода и объект события, ожидающий завершения запроса. Метод должен быть непосредственным дочерним объектом в пространстве имен ACPI устройства, на которое отправляется запрос.

  • IOCTL_ACPI_ASYNC_EVAL_METHOD

    Этот запрос асинхронно оценивает метод управления, поддерживаемый устройством, на которое отправляется запрос. Чтобы использовать этот IOCTL, драйвер для устройства предоставляет буферы аргументов метода ввода и вывода, имя метода и подпрограмму IoCompletion , которую диспетчер операций ввода-вывода вызывает после выполнения запроса всеми драйверами более низкого уровня. Метод должен быть непосредственным дочерним объектом в пространстве имен ACPI устройства, на которое отправляется запрос.

  • IOCTL_ACPI_EVAL_METHOD_EX

    Этот запрос синхронно оценивает метод управления, поддерживаемый устройством или дочерним объектом устройства, на которое отправляется запрос. Чтобы использовать этот IOCTL, драйвер для устройства предоставляет буферы аргументов метода ввода и вывода, путь и имя метода управления в пространстве имен ACPI устройства, а также объект события, ожидающий завершения запроса.

  • IOCTL_ACPI_ASYNC_EVAL_METHOD_EX

    Этот запрос асинхронно оценивает метод управления, поддерживаемый устройством или дочерним объектом устройства, на которое отправляется запрос. Чтобы использовать этот IOCTL, драйвер для устройства предоставляет буферы аргументов метода ввода и вывода, путь и имя метода управления в пространстве имен ACPI устройства, а также подпрограмму IoCompletion , которую диспетчер операций ввода-вывода вызывает после выполнения запроса всеми драйверами более низкого уровня.

Дополнительные сведения о синхронной оценке методов управления ACPI см. в разделе Синхронная оценка методов управления ACPI. Дополнительные сведения об асинхронной оценке методов управления ACPI см. в разделе IOCTL_ACPI_ASYNC_EVAL_METHOD и IOCTL_ACPI_ASYNC_EVAL_METHOD_EX.

Чтобы драйвер устройства оценил метод управления, который не является непосредственным дочерним объектом устройства, драйвер должен указать путь и имя метода в пространстве имен ACPI устройства. Чтобы получить путь и имя дочерних объектов устройства, Windows поддерживает запрос IOCTL_ACPI_ENUM_CHILDREN , который драйвер устройства может использовать для перечисления следующих элементов:

  • Устройство и его непосредственные дочерние устройства.

  • Устройство и все дочерние устройства его потомков.

  • Дочерние объекты с указанным именем в пространстве имен ACPI устройства, включая, в частности, методы управления.

Сведения о перечислении устройств и методов в пространстве имен устройства см. в разделе Перечисление дочерних устройств и методов управления.

Сведения о предоставляемых системой макросах, которые драйвер может использовать для оценки методов управления, см. в разделе Макросы метода управления.

Дополнительные сведения об устройствах ACPI, методах управления и пространствах имен см. в статье Расширенная конфигурация и спецификация интерфейса питания.