Evaluación de métodos de control ACPI
Un método de control advanced Configuration and Power Interface (ACPI) es software que declara y define las operaciones para consultar y configurar el hardware del sistema. Un sistema compatible con ACPI proporciona un conjunto mínimo de métodos de control. Los métodos de control se escriben en el lenguaje de origen ACPI (ASL), compilado por un compilador ASL en lenguaje de máquina ACPI (AML), cargado desde el firmware del sistema en el espacio de nombres ACPI e interpretado por el controlador ACPI.
Los controladores de dispositivos en modo kernel que cumplen los requisitos del marco de controlador del modo kernel (KMDF) o el modelo de controlador de Windows (WDM) pueden evaluar los métodos de control ACPI mediante solicitudes de control de dispositivos. A partir de Windows 8, los controladores en modo de usuario que cumplen los requisitos del marco de controlador del modo de usuario (UMDF) pueden usar solicitudes de control de dispositivos para evaluar los métodos de control ACPI. Normalmente, un controlador evalúa los métodos de control ACPI para iniciar o configurar funciones específicas de la plataforma. Un controlador puede evaluar los métodos de control ACPI dentro del espacio de nombres del objeto de dispositivo físico (PDO) para el que se carga. En el caso de los controladores cargados en la pila de dispositivos de un dispositivo enumerado por ACPI, el controlador ACPI siempre es el controlador de bus que creó y opera el PDO en la pila de dispositivos. Esta funcionalidad incluye la evaluación de métodos de control admitidos por objetos secundarios que son descendientes de un dispositivo primario.
Un controlador evalúa los métodos de control mediante el envío de una de las siguientes solicitudes de IRP_MJ_DEVICE_CONTROL a un dispositivo.
-
Esta solicitud evalúa de forma sincrónica un método de control compatible con el dispositivo al que se envía la solicitud. Para usar este IOCTL, un controlador para el dispositivo proporciona búferes de argumentos de método de entrada y salida, el nombre de un método y un objeto de evento que espera a que se complete la solicitud. El método debe ser un objeto secundario inmediato en el espacio de nombres ACPI del dispositivo al que se envía la solicitud.
-
Esta solicitud evalúa de forma asincrónica un método de control compatible con el dispositivo al que se envía la solicitud. Para usar este IOCTL, un controlador para el dispositivo proporciona búferes de argumentos de método de entrada y salida, el nombre de un método y una rutina de IoCompletion a la que llama el administrador de E/S después de que todos los controladores de nivel inferior hayan completado la solicitud. El método debe ser un objeto secundario inmediato en el espacio de nombres ACPI del dispositivo al que se envía la solicitud.
-
Esta solicitud evalúa de forma sincrónica un método de control compatible con el dispositivo o un objeto secundario descendiente del dispositivo al que se envía la solicitud. Para usar este IOCTL, un controlador para el dispositivo proporciona búferes de argumentos de método de entrada y salida, la ruta de acceso y el nombre del método de control en el espacio de nombres ACPI del dispositivo, y un objeto de evento que espera a que se complete la solicitud.
IOCTL_ACPI_ASYNC_EVAL_METHOD_EX
Esta solicitud evalúa de forma asincrónica un método de control compatible con el dispositivo o un objeto secundario descendiente del dispositivo al que se envía la solicitud. Para usar este IOCTL, un controlador para el dispositivo proporciona búferes de argumentos de método de entrada y salida, la ruta de acceso y el nombre del método de control en el espacio de nombres ACPI del dispositivo, y una rutina de IoCompletion a la que llama el administrador de E/S después de que todos los controladores de nivel inferior hayan completado la solicitud.
Para obtener más información sobre cómo evaluar los métodos de control ACPI de forma sincrónica, vea Evaluar métodos de control ACPI de forma sincrónica. Para obtener más información sobre cómo evaluar los métodos de control ACPI de forma asincrónica, consulte IOCTL_ACPI_ASYNC_EVAL_METHOD y IOCTL_ACPI_ASYNC_EVAL_METHOD_EX.
Para que un controlador de un dispositivo evalúe un método de control que no sea un objeto secundario inmediato del dispositivo, el controlador debe proporcionar la ruta de acceso y el nombre del método en el espacio de nombres ACPI del dispositivo. Para ayudar a obtener la ruta de acceso y el nombre de los objetos secundarios de un dispositivo, Windows admite la solicitud de IOCTL_ACPI_ENUM_CHILDREN , que un controlador para un dispositivo puede usar para enumerar lo siguiente:
El dispositivo y sus dispositivos secundarios inmediatos.
El dispositivo y todos sus dispositivos secundarios descendientes.
Objetos secundarios descendientes de un nombre proporcionado en el espacio de nombres ACPI del dispositivo, incluidos, en particular, los métodos de control.
Para obtener información sobre cómo enumerar dispositivos y métodos en el espacio de nombres de un dispositivo, vea Enumerar dispositivos secundarios y métodos de control.
Para obtener información sobre las macros proporcionadas por el sistema que un controlador puede usar para ayudar a evaluar los métodos de control, vea Macros de método de control.
Para obtener más información sobre los dispositivos ACPI, los métodos de control y los espacios de nombres, vea Advanced Configuration and Power Interface Specification.