ACPI-Benachrichtigungen

Jede ACPI-Benachrichtigung, die die AcceptAcpiNotification-Rückrufroutine des PEP empfängt, wird von einem Notification-Parameter begleitet, der den Typ der Benachrichtigung angibt, und einem Data-Parameter, der auf eine Datenstruktur verweist, die die Informationen für den angegebenen Benachrichtigungstyp enthält.

In diesem Aufruf wird der Notification-Parameter auf einen PEP_NOTIFY_ACPI_XXX konstanten Wert festgelegt, der den Benachrichtigungstyp angibt. Der Parameter Data verweist auf einen PEP_ACPI_XXX Strukturtyp, der diesem Benachrichtigungstyp zugeordnet ist.

Die folgenden ACPI-Benachrichtigungs-IDs werden von der Rückrufroutine AcceptAcpiNotification verwendet.

Benachrichtigungs-ID Wert Zugeordnete Struktur
PEP_NOTIFY_ACPI_PREPARE_DEVICE 0x01 PEP_ACPI_PREPARE_DEVICE
PEP_NOTIFY_ACPI_ABANDON_DEVICE 0x02 PEP_ACPI_ABANDON_DEVICE
PEP_NOTIFY_ACPI_REGISTER_DEVICE 0x03 PEP_ACPI_REGISTER_DEVICE
PEP_NOTIFY_ACPI_UNREGISTER_DEVICE 0x04 PEP_ACPI_UNREGISTER_DEVICE
PEP_NOTIFY_ACPI_ENUMERATE_DEVICE_NAMESPACE 0x05 PEP_ACPI_ENUMERATE_DEVICE_NAMESPACE
PEP_NOTIFY_ACPI_QUERY_OBJECT_INFORMATION 0x06 PEP_ACPI_QUERY_OBJECT_INFORMATION
PEP_NOTIFY_ACPI_EVALUATE_CONTROL_METHOD 0x07 PEP_ACPI_EVALUATE_CONTROL_METHOD
PEP_NOTIFY_ACPI_QUERY_DEVICE_CONTROL_RESOURCES 0x08 PEP_ACPI_QUERY_DEVICE_CONTROL_RESOURCES
PEP_NOTIFY_ACPI_TRANSLATED_DEVICE_CONTROL_RESOURCES 0x09 PEP_ACPI_TRANSLATED_DEVICE_CONTROL_RESOURCES

PEP_NOTIFY_ACPI_PREPARE_DEVICE

Benachrichtigung: Der Wert PEP_NOTIFY_ACPI_PREPARE_DEVICE. Daten: Ein Zeiger auf eine PEP_ACPI_PREPARE_DEVICE Struktur, die das Gerät anhand des Namens identifiziert.

Ermöglicht pep die Auswahl, ob ACPI-Dienste für ein Gerät bereitgestellt werden sollen.

Das Windows Power Management Framework (PoFx) sendet diese Benachrichtigung, wenn der Windows ACPI-Treiber während der Geräteenumeration ein neues Gerät im ACPI-Namespace erkennt. Diese Benachrichtigung wird an PEPs gesendet, die AcceptAcpiNotification-Rückrufroutinen implementieren.

Um eine PEP_NOTIFY_ACPI_PREPARE_DEVICE Benachrichtigung zu senden, ruft PoFx die AcceptAcpiNotification-Routine des PEP auf. In diesem Aufruf ist der Wert des Notification-Parameters PEP_NOTIFY_ACPI_PREPARE_DEVICE, und der Data-Parameter verweist auf eine PEP_ACPI_PREPARE_DEVICE-Struktur, die den Namen des Geräts enthält. Wenn pep bereit ist, ACPI-Dienste für dieses Gerät bereitzustellen, legt pep den DeviceAccepted-Member dieser Struktur auf TRUE fest. Um die Bereitstellung solcher Dienste abzulehnen, legt pep diesen Member auf FALSE fest.

Wenn pep (durch Festlegen von DeviceAccepted = TRUE) angibt, dass es bereit ist, ACPI-Dienste für das Gerät bereitzustellen, antwortet PoFx, indem es pep eine PEP_NOTIFY_ACPI_REGISTER_DEVICE Benachrichtigung sendet, um pep als alleiniger Anbieter von ACPI-Diensten für das Gerät zu registrieren. PoFx erwartet, dass nur ein PEP die Rolle des ACPI-Dienstanbieters für ein Gerät beansprucht.

Als bewährte Methode sollten Sie als Reaktion auf die PEP_NOTIFY_ACPI_PREPARE_DEVICE Benachrichtigung keine Geräteinitialisierung durchführen. Verschieben Sie stattdessen diese Initialisierung, bis entweder die PEP_NOTIFY_ACPI_REGISTER_DEVICE Benachrichtigung für das Gerät empfangen oder eine ACPI-Steuerungsmethode (z. B. _INI) für das Gerät aufgerufen wird.

Bei einer PEP_NOTIFY_ACPI_PREPARE_DEVICE Benachrichtigung wird die AcceptAcpiNotification-Routine immer unter IRQL = PASSIVE_LEVEL aufgerufen.

PEP_NOTIFY_ACPI_ABANDON_DEVICE

Benachrichtigung: Der Wert PEP_NOTIFY_ACPI_ABANDON_DEVICE.

Daten: Ein Zeiger auf eine PEP_ACPI_ABANDON_DEVICE Struktur, die das verlassene Gerät identifiziert.

Informiert den PEP, dass das angegebene Gerät verlassen wurde und keine ACPI-Dienste mehr von PEP benötigt.

Das Windows Power Management Framework (PoFx) sendet diese Benachrichtigung, um pep darüber zu informieren, dass das Gerät vom Betriebssystem nicht mehr verwendet wird. Der PEP kann diese Benachrichtigung verwenden, um jeden internen Speicher zu sauber, den es zugewiesen hat, um den Zustand des Geräts nachzuverfolgen.

Um eine PEP_NOTIFY_ACPI_ABANDON_DEVICE Benachrichtigung zu senden, ruft PoFx die Rückrufroutine AcceptAcpiNotification des PEP auf. In diesem Aufruf wird der Wert des Notification-Parameters PEP_NOTIFY_ACPI_ABANDON_DEVICE, und der Data-Parameter verweist auf eine PEP_ACPI_ABANDON_DEVICE-Struktur.

PoFx sendet diese Benachrichtigung nur an einen PEP, der sich in einer vorherigen PEP_NOTIFY_ACPI_PREPARE_DEVICE Benachrichtigung für die Bereitstellung von ACPI-Diensten für das Gerät entschieden hat. Wenn der PEP registriert hat, um diese Dienste in einer vorherigen PEP_NOTIFY_ACPI_REGISTER_DEVICE-Benachrichtigung bereitzustellen, sendet PoFx vor dem Senden der PEP_NOTIFY_ACPI_ABANDON_DEVICE-Benachrichtigung eine PEP_NOTIFY_ACPI_UNREGISTER_DEVICE Benachrichtigung für das Gerät.

Für eine PEP_NOTIFY_ACPI_ABANDON_DEVICE Benachrichtigung wird die AcceptAcpiNotification-Routine immer unter IRQL = PASSIVE_LEVEL aufgerufen.

PEP_NOTIFY_ACPI_REGISTER_DEVICE

Benachrichtigung: Der Wert PEP_NOTIFY_ACPI_REGISTER_DEVICE.

Daten: Ein Zeiger auf eine PEP_ACPI_REGISTER_DEVICE Struktur, die das Gerät identifiziert. Als Reaktion auf diese Benachrichtigung wird erwartet, dass pep einen gültigen PEPHANDLE-Wert erstellt, um das Gerät zu identifizieren und diesen Handlewert in die Struktur zu schreiben.

Registriert pep als alleiniger Anbieter von ACPI-Diensten für das angegebene Gerät.

Das Windows Power Management Framework (PoFx) sendet diese Benachrichtigung an einen PEP, der in einer vorherigen PEP_NOTIFY_ACPI_PREPARE_DEVICE Benachrichtigung angegeben hat, dass es bereit ist, ACPI-Dienste für das angegebene Gerät bereitzustellen.

Um eine PEP_NOTIFY_ACPI_REGISTER_DEVICE Benachrichtigung zu senden, ruft PoFx die AcceptAcpiNotification-Routine des PEP auf. In diesem Aufruf ist der Wert des Notification-Parameters PEP_NOTIFY_ACPI_REGISTER_DEVICE, und der Parameter Data verweist auf eine PEP_ACPI_REGISTER_DEVICE-Struktur, die das Gerät identifiziert, für das pep ACPI-Dienste bereitstellen soll.

Bei einer PEP_NOTIFY_ACPI_REGISTER_DEVICE Benachrichtigung wird die AcceptAcpiNotification-Routine immer unter IRQL = PASSIVE_LEVEL aufgerufen.

PEP_NOTIFY_ACPI_UNREGISTER_DEVICE

Benachrichtigung: Der Wert PEP_NOTIFY_ACPI_UNREGISTER_DEVICE.

Daten: Ein Zeiger auf eine PEP_ACPI_UNREGISTER_DEVICE-Struktur, die den PEPHANDLE für das Gerät enthält.

Bricht die Registrierung des angegebenen Geräts für ACPI-Dienste vom PEP ab.

Als Reaktion auf diese Benachrichtigung kann der PEP DIE PEPHANDLE zerstören, die der PEP in einer vorherigen PEP_NOTIFY_ACPI_REGISTER_DEVICE Benachrichtigung für dieses Gerät erstellt hat.

Um eine PEP_NOTIFY_ACPI_UNREGISTER_DEVICE Benachrichtigung zu senden, ruft PoFx die Rückrufroutine AcceptAcpiNotification des PEP auf. In diesem Aufruf ist der Wert des Notification-Parameters PEP_NOTIFY_ACPI_UNREGISTER_DEVICE, und der Data-Parameter verweist auf eine PEP_ACPI_UNREGISTER_DEVICE-Struktur.

Bei einer PEP_NOTIFY_ACPI_UNREGISTER_DEVICE Benachrichtigung wird die AcceptAcpiNotification-Routine immer unter IRQL = PASSIVE_LEVEL aufgerufen.

PEP_NOTIFY_ACPI_ENUMERATE_DEVICE_NAMESPACE

Benachrichtigung: Der Wert PEP_NOTIFY_ACPI_ENUMERATE_DEVICE_NAMESPACE.

Daten: Ein Zeiger auf eine PEP_ACPI_ENUMERATE_DEVICE_NAMESPACE-Struktur, die eine Enumeration der Objekte im ACPI-Namespace des Geräts enthält.

Fragt pep die Liste der ACPI-Objekte (native Methoden) ab, die vom PEP unter dem angegebenen Gerät im ACPI-Namespace unterstützt werden.

Der Windows ACPI-Treiber verwendet die von dieser Benachrichtigung aufgezählten Objekte, um den Namespace für das angegebene Gerät zu erstellen. Wenn er auf dieses Gerät verweist, fragt der ACPI-Treiber den PEP nur nach diesen Objekten ab.

Das Windows Power Management Framework (PoFx) sendet die PEP_NOTIFY_ACPI_ENUMERATE_DEVICE_NAMESPACE Benachrichtigung, kurz nachdem ein Gerät erkannt wurde, und die PEP-Registrierungen, um ACPI-Dienste für das Gerät bereitzustellen. Weitere Informationen zu dieser Registrierung finden Sie unter PEP_NOTIFY_ACPI_REGISTER_DEVICE.

Um eine PEP_NOTIFY_ACPI_ENUMERATE_DEVICE_NAMESPACE Benachrichtigung zu senden, ruft PoFx die Rückrufroutine AcceptAcpiNotification des PEP auf. In diesem Aufruf wird der Wert des Notification-Parameters PEP_NOTIFY_ACPI_ENUMERATE_DEVICE_NAMESPACE, und der Data-Parameter verweist auf eine PEP_ACPI_ENUMERATE_DEVICE_NAMESPACE-Struktur.

Es wird erwartet, dass die AcceptAcpiNotification-Routine eine PEP_NOTIFY_ACPI_ENUMERATE_DEVICE_NAMESPACE Benachrichtigung verarbeitet und TRUE zurückgibt. Andernfalls wird eine Fehlerprüfung verursacht.

Für eine PEP_NOTIFY_ACPI_ENUMERATE_DEVICE_NAMESPACE Benachrichtigung wird die AcceptAcpiNotification-Routine immer unter IRQL = PASSIVE_LEVEL aufgerufen.

PEP_NOTIFY_ACPI_QUERY_OBJECT_INFORMATION

Benachrichtigung: Der Wert PEP_NOTIFY_ACPI_QUERY_OBJECT_INFORMATION.

Daten: Ein Zeiger auf eine PEP_ACPI_QUERY_OBJECT_INFORMATION-Struktur, die die Attribute des ACPI-Objekts angibt.

Fragt den PEP nach Informationen zu einem zuvor aufgezählten ACPI-Objekt ab.

Das Windows Power Management Framework (PoFx) sendet diese Benachrichtigung, um pep nach den Attributen eines Objekts abzufragen, das während der Behandlung einer vorherigen PEP_NOTIFY_ACPI_ENUMERATE_DEVICE_NAMESPACE Benachrichtigung aufgezählt wurde. Derzeit sind die einzigen Objekte, die aufgelistet werden, Steuerelementmethoden.

Um eine PEP_NOTIFY_ACPI_QUERY_OBJECT_INFORMATION Benachrichtigung zu senden, ruft PoFx die Rückrufroutine AcceptAcpiNotification des PEP auf. In diesem Aufruf wird der Wert des Notification-Parameters PEP_NOTIFY_ACPI_QUERY_OBJECT_INFORMATION, und der Data-Parameter verweist auf eine PEP_ACPI_QUERY_OBJECT_INFORMATION-Struktur.

Bei einer PEP_NOTIFY_ACPI_QUERY_OBJECT_INFORMATION Benachrichtigung wird die AcceptAcpiNotification-Routine immer unter IRQL = PASSIVE_LEVEL aufgerufen.

PEP_NOTIFY_ACPI_EVALUATE_CONTROL_METHOD

Benachrichtigung: Der Wert PEP_NOTIFY_ACPI_EVALUATE_CONTROL_METHOD.

Daten: Ein Zeiger auf eine PEP_ACPI_EVALUATE_CONTROL_METHOD-Struktur, die eine auszuwertende ACPI-Steuerelementmethode, ein Eingabeargument für diese Methode und einen Ausgabepuffer für das Ergebnis angibt.

Wird verwendet, um eine ACPI-Steuerelementmethode auszuwerten, für die pep der registrierte Handler ist.

Das Windows Power Management Framework (PoFx) sendet diese Benachrichtigung an pep, wenn der Windows ACPI-Treiber eine ACPI-Steuerungsmethode auswerten muss, die vom PEP implementiert wird.

Um eine PEP_NOTIFY_ACPI_EVALUATE_CONTROL_METHOD Benachrichtigung zu senden, ruft PoFx die Rückrufroutine AcceptAcpiNotification des PEP auf. In diesem Aufruf ist der Wert des Notification-Parameters PEP_NOTIFY_ACPI_EVALUATE_CONTROL_METHOD, und der Data-Parameter verweist auf eine PEP_ACPI_EVALUATE_CONTROL_METHOD-Struktur.

Der Plattform-Designer kann auswählen, ob die PEP- oder ACPI-Firmware eine bestimmte ACPI-Steuerungsmethode verarbeiten soll. Wenn pep der registrierte Handler für eine ACPI-Steuerungsmethode ist, antwortet PoFx auf eine Anforderung des Windows ACPI-Treibers, um diese Methode auszuwerten, indem eine PEP_NOTIFY_ACPI_EVALUATE_CONTROL_METHOD Benachrichtigung an pep gesendet wird.

Im Folgenden finden Sie eine Liste von Beispielen für ACPI-Steuerungsmethoden, die pep für ein Gerät verarbeiten kann:

Geräteidentifikation und Konfiguration: _HID, _CID, _UID, _ADR, _CLS, _SUB, _CRS, _PRS usw. Energieverwaltung und Aktivierung des Geräts: _PS0 bis _PS3, _PR0 über _PR3, _DSW usw. Gerätespezifische Methoden: _DSM und alle gerätestapelspezifischen Steuerungsmethoden. Für ein spezielles Gerät, z. B. ein ACPI-Zeit- und Alarmgerät, wird diese Benachrichtigung verwendet, um Zeit- und Alarmmethoden (_GCP, _GRT, _SRT usw.) auszuwerten.

Für eine PEP_NOTIFY_ACPI_EVALUATE_CONTROL_METHOD Benachrichtigung wird die AcceptAcpiNotification-Routine immer unter IRQL = PASSIVE_LEVEL aufgerufen.

PEP_NOTIFY_ACPI_QUERY_DEVICE_CONTROL_RESOURCES

Benachrichtigung: Der Wert PEP_NOTIFY_ACPI_QUERY_DEVICE_CONTROL_RESOURCES.

Daten: Ein Zeiger auf eine PEP_ACPI_QUERY_DEVICE_CONTROL_RESOURCES Struktur, die die Liste der Energieressourcen enthält.

Fragt pep die Liste der Rohressourcen ab, die zum Steuern der Energieversorgung des Geräts erforderlich sind.

Als Reaktion auf diese Benachrichtigung stellt PEP die Liste der Rohressourcen bereit, die für die Steuerung der Stromversorgung des Geräts erforderlich sind. Der Windows ACPI-Treiber erfordert diese Liste, damit er die vom Gerät benötigten Energieressourcen reservieren und die entsprechende Liste der übersetzten Ressourcen an pep bereitstellen kann (durch Senden einer PEP_NOTIFY_ACPI_TRANSLATED_DEVICE_CONTROL_RESOURCES Benachrichtigung). Weitere Informationen finden Sie unter Unformatierte und übersetzte Ressourcen.

Um eine PEP_NOTIFY_ACPI_QUERY_DEVICE_CONTROL_RESOURCES Benachrichtigung zu senden, ruft das Windows Power Management Framework (PoFx) die Rückrufroutine AcceptAcpiNotification des PEP auf. In diesem Aufruf wird der Wert des Notification-Parameters PEP_NOTIFY_ACPI_QUERY_DEVICE_CONTROL_RESOURCES, und der Data-Parameter verweist auf eine PEP_ACPI_QUERY_DEVICE_CONTROL_RESOURCES-Struktur.

Für eine PEP_NOTIFY_ACPI_QUERY_DEVICE_CONTROL_RESOURCES Benachrichtigung wird die AcceptAcpiNotification-Routine immer unter IRQL = PASSIVE_LEVEL aufgerufen.

PEP_NOTIFY_ACPI_TRANSLATED_DEVICE_CONTROL_RESOURCES

Benachrichtigung: Der Wert PEP_NOTIFY_ACPI_TRANSLATED_DEVICE_CONTROL_RESOURCES.

Daten: Ein Zeiger auf eine PEP_ACPI_TRANSLATED_DEVICE_CONTROL_RESOURCES Struktur, die die Liste der übersetzten Ressourcen enthält.

Stellt pep eine Liste der übersetzten Ressourcen für alle Energiesteuerungsressourcen bereit, die für das Gerät benötigt werden.

Das Windows Power Management Framework (PoFx) sendet diese Benachrichtigung, wenn das PEP Als Reaktion auf die vorherige PEP_NOTIFY_ACPI_QUERY_DEVICE_CONTROL_RESOURCES Benachrichtigung Rohressourcen aufgelistet hat. Die PEP_NOTIFY_ACPI_TRANSLATED_DEVICE_CONTROL_RESOURCES-Benachrichtigung stellt pep die entsprechende Liste der übersetzten Ressourcen bereit. Weitere Informationen finden Sie unter Unformatierte und übersetzte Ressourcen.

Um eine PEP_NOTIFY_ACPI_TRANSLATED_DEVICE_CONTROL_RESOURCES Benachrichtigung zu senden, ruft PoFx die Rückrufroutine AcceptAcpiNotification des PEP auf. In diesem Aufruf wird der Wert des Notification-Parameters PEP_NOTIFY_ACPI_TRANSLATED_DEVICE_CONTROL_RESOURCES, und der Data-Parameter verweist auf eine PEP_ACPI_TRANSLATED_DEVICE_CONTROL_RESOURCES-Struktur.

Für eine PEP_NOTIFY_ACPI_TRANSLATED_DEVICE_CONTROL_RESOURCES Benachrichtigung wird die AcceptAcpiNotification-Routine immer unter IRQL = PASSIVE_LEVEL aufgerufen.

PEP_NOTIFY_ACPI_WORK

Benachrichtigung: Der Wert PEP_NOTIFY_ACPI_WORK.

Daten: Ein Zeiger auf eine PEP_WORK-Struktur.

Wird einmal an pep gesendet, wenn pep die RequestWorker-Routine aufruft, um ein Arbeitselement vom Windows Power Management Framework (PoFx) anzufordern. Diese Benachrichtigung wird nur für ACPI-Arbeiten verwendet.

Nachdem pep die RequestWorker-Routine aufgerufen hat, um ein Arbeitselement anzufordern, antwortet PoFx, indem es pep eine PEP_NOTIFY_ACPI_WORK Benachrichtigung sendet. Diese Benachrichtigung wird jedoch erst gesendet, wenn die Zum Verarbeiten des Arbeitselements erforderlichen Ressourcen (d. h. der Arbeitsthread) verfügbar sind. Auf diese Weise garantiert PoFx, dass die Arbeitsanforderung, die pep während der Benachrichtigung an PoFx übergibt, aufgrund fehlender Ressourcen nie fehlschlagen kann.

Beim Eintrag sollte pep davon ausgehen, dass die PEP_WORK-Struktur nicht initialisiert ist. Um diese Benachrichtigung zu behandeln, sollte pep das WorkInformation-Element so festlegen, dass er auf eine durch PEP zugewiesene PEP_WORK_INFORMATION-Struktur verweist, die die angeforderte Arbeit beschreibt. Darüber hinaus sollte pep den NeedWork-Member der PEP_WORK-Struktur auf TRUE festlegen, um zu bestätigen, dass pep die PEP_NOTIFY_ACPI_WORK Benachrichtigung verarbeitet hat und dass das WorkInformation-Element auf eine gültige PEP_WORK_INFORMATION-Struktur verweist. Wenn pep die Benachrichtigung nicht verarbeitet oder die PEP_WORK_INFORMATION-Struktur nicht zuordnen kann, sollte pep das WorkInformation-Element auf NULL und das NeedWork-Element auf FALSE festlegen.

Für eine PEP_NOTIFY_ACPI_WORK Benachrichtigung wird die AcceptAcpiNotification-Routine immer unter IRQL = PASSIVE_LEVEL aufgerufen.