Auswerten von ACPI-Steuerungsmethoden

Eine ACPI-Steuerungsmethode (Advanced Configuration and Power Interface) ist Eine Software, die Vorgänge zum Abfragen und Konfigurieren von Systemhardware deklariert und definiert. Ein ACPI-kompatibles System bietet einen minimalen Satz von Steuerungsmethoden. Steuerungsmethoden werden in der ACPI-Quellsprache (ACPI Source Language, ASL) geschrieben, von einem ASL-Compiler in ACPI Machine Language (AML) kompiliert, von der Systemfirmware in den ACPI-Namespace geladen und vom ACPI-Treiber interpretiert.

Kernelmodus-Gerätetreiber, die den Anforderungen des Kernelmodustreiberframeworks (KMDF) oder des Windows-Treibermodells (WDM) entsprechen, können ACPI-Steuerungsmethoden mithilfe von Gerätesteuerungsanforderungen auswerten. Ab Windows 8 können Benutzermodustreiber, die den Anforderungen von UMDF (User-Mode Driver Framework) entsprechen, Gerätesteuerungsanforderungen verwenden, um ACPI-Steuerungsmethoden auszuwerten. In der Regel wertet ein Treiber ACPI-Steuerungsmethoden aus, um plattformspezifische Funktionen zu starten oder zu konfigurieren. Ein Treiber kann ACPI-Steuerelementmethoden innerhalb des Namespace des physischen Geräteobjekts (PDO) auswerten, für das er geladen wird. Bei Treibern, die in den Gerätestapel eines ACPI-enumerierten Geräts geladen werden, ist der ACPI-Treiber immer der Bustreiber, der die PDO im Gerätestapel erstellt und betreibt. Diese Funktion umfasst das Auswerten von Steuerungsmethoden, die von untergeordneten Objekten unterstützt werden, die Nachfolger eines übergeordneten Geräts sind.

Ein Treiber wertet Steuerungsmethoden aus, indem er eine der folgenden IRP_MJ_DEVICE_CONTROL Anforderungen an ein Gerät sendet.

  • IOCTL_ACPI_EVAL_METHOD

    Diese Anforderung wertet synchron eine Steuerungsmethode aus, die von dem Gerät unterstützt wird, an das die Anforderung gesendet wird. Um diese IOCTL zu verwenden, stellt ein Treiber für das Gerät Eingabe- und Ausgabemethodenargumentpuffer, den Namen einer Methode und ein Ereignisobjekt bereit, das auf den Abschluss der Anforderung wartet. Die -Methode muss ein unmittelbar untergeordnetes Objekt im ACPI-Namespace des Geräts sein, an das die Anforderung gesendet wird.

  • IOCTL_ACPI_ASYNC_EVAL_METHOD

    Diese Anforderung wertet asynchron eine Steuerungsmethode aus, die von dem Gerät unterstützt wird, an das die Anforderung gesendet wird. Um diese IOCTL zu verwenden, stellt ein Treiber für das Gerät Eingabe- und Ausgabemethodenargumentpuffer, den Namen einer Methode und eine IoCompletion-Routine bereit, die der E/A-Manager aufruft, nachdem alle Treiber auf niedrigerer Ebene die Anforderung abgeschlossen haben. Die -Methode muss ein unmittelbar untergeordnetes Objekt im ACPI-Namespace des Geräts sein, an das die Anforderung gesendet wird.

  • IOCTL_ACPI_EVAL_METHOD_EX

    Diese Anforderung wertet synchron eine Steuerungsmethode aus, die vom Gerät unterstützt wird, oder ein untergeordnetes Nachfolgerobjekt des Geräts, an das die Anforderung gesendet wird. Um diese IOCTL zu verwenden, stellt ein Treiber für das Gerät Eingabe- und Ausgabemethodenargumentpuffer, den Pfad und den Namen der Steuerelementmethode im ACPI-Namespace des Geräts und ein Ereignisobjekt bereit, das auf den Abschluss der Anforderung wartet.

  • IOCTL_ACPI_ASYNC_EVAL_METHOD_EX

    Diese Anforderung wertet asynchron eine Steuerungsmethode aus, die vom Gerät unterstützt wird, oder ein untergeordnetes Untergeordnetes Objekt des Geräts, an das die Anforderung gesendet wird. Um diese IOCTL zu verwenden, stellt ein Treiber für das Gerät Eingabe- und Ausgabemethodenargumentpuffer, den Pfad und Den Namen der Steuerungsmethode im ACPI-Namespace des Geräts sowie eine IoCompletion-Routine bereit, die der E/A-Manager aufruft, nachdem alle Treiber auf niedrigerer Ebene die Anforderung abgeschlossen haben.

Weitere Informationen zum synchronen Auswerten von ACPI-Steuerungsmethoden finden Sie unter Synchrones Auswerten von ACPI-Steuerungsmethoden. Weitere Informationen zum asynchronen Auswerten von ACPI-Steuerungsmethoden finden Sie unter IOCTL_ACPI_ASYNC_EVAL_METHOD und IOCTL_ACPI_ASYNC_EVAL_METHOD_EX.

Damit ein Treiber eines Geräts eine Steuerungsmethode auswerten kann, die kein unmittelbar untergeordnetes Objekt des Geräts ist, muss der Treiber den Pfad und Namen der Methode im ACPI-Namespace des Geräts angeben. Um den Pfad und den Namen untergeordneter Objekte eines Geräts abzurufen, unterstützt Windows die IOCTL_ACPI_ENUM_CHILDREN-Anforderung , die ein Treiber für ein Gerät verwenden kann, um Folgendes aufzulisten:

  • Das Gerät und seine unmittelbar untergeordneten Geräte.

  • Das Gerät und alle untergeordneten Untergeordneten Geräte.

  • Untergeordnete Untergeordnete Objekte eines angegebenen Namens im ACPI-Namespace des Geräts, einschließlich insbesondere Steuerungsmethoden.

Informationen zum Auflisten von Geräten und Methoden im Namespace eines Geräts finden Sie unter Aufzählen untergeordneter Geräte und Steuerungsmethoden.

Informationen zu vom System bereitgestellten Makros, die ein Treiber zum Auswerten von Steuerungsmethoden verwenden kann, finden Sie unter Steuerelementmethodenmakros.

Weitere Informationen zu ACPI-Geräten, Steuerungsmethoden und Namespaces finden Sie unter Erweiterte Konfigurations- und Leistungsschnittstellenspezifikation.