PO_FX_DEVICE_POWER_REQUIRED_CALLBACK Rückruffunktion (wdm.h)

Die DevicePowerRequiredCallback-Rückrufroutine benachrichtigt den Gerätetreiber, dass das Gerät in den Energiezustand D0 wechseln und verbleiben muss.

Syntax

PO_FX_DEVICE_POWER_REQUIRED_CALLBACK PoFxDevicePowerRequiredCallback;

void PoFxDevicePowerRequiredCallback(
  [in] PVOID Context
)
{...}

Parameter

[in] Context

Ein Zeiger auf den Gerätekontext. Der Gerätetreiber verwendet diesen Kontext, um Informationen zum aktuellen Energiezustand des Geräts zu speichern. Der Gerätetreiber hat diesen Zeiger im DeviceContext-Element der PO_FX_DEVICE-Struktur angegeben, die der Treiber zum Registrieren des Geräts beim Power Management Framework (PoFx) verwendet hat. Dieser Kontext ist für PoFx undurchsichtig.

Rückgabewert

Keine

Bemerkungen

Nachdem PoFx die DevicePowerRequiredCallback-Routine des Treibers aufgerufen hat, muss der Treiber einen Übergang in den D0-Zustand initiieren, indem er eine D0-IRP (eine IRP_MN_SET_POWER-Anforderung ) nach unten im Gerätestapel sendet, wenn sich das Gerät noch nicht im D0-Zustand befindet. Nachdem der Treiber die Verarbeitung dieser Anforderung abgeschlossen hat (und alle niedrigeren Treiber abgeschlossen), muss der Treiber die PoFxReportDevicePoweredOn-Routine aufrufen. Der PoFxReportDevicePoweredOn-Aufruf benachrichtigt PoFx, dass das Gerät seine Antwort auf den DevicePowerRequiredCallback-Aufruf abgeschlossen hat . Der Treiber kann PoFxReportDevicePoweredOn während oder nach dem DevicePowerRequiredCallback-Aufruf aufrufen.

Jedes Mal, wenn die DevicePowerRequiredCallback-Routine aufgerufen wird, muss der Treiber reagieren, indem er PoFxReportDevicePoweredOn aufruft. Der PoFxReportDevicePoweredOn-Aufruf kann entweder während oder nach dem DevicePowerRequiredCallback-Aufruf erfolgen. Der Treiber muss PoFxReportDevicePoweredOn aufrufen, unabhängig davon, ob kein D0-IRP erforderlich ist, die D0 IRP-Anforderung fehlschlägt oder die verteilte D0-IRP erfolgreich ist oder fehlschlägt.

PoFx ruft die DevicePowerRequiredCallback-Routine nur auf, wenn PoFx zuvor die DevicePowerNotRequiredCallback-Routine des Treibers aufgerufen hat, um den Treiber zu benachrichtigen, dass das Gerät nicht im D0-Zustand bleiben muss.

Der Aufruf der DevicePowerRequiredCallback-Routine kann jederzeit erfolgen, nachdem der Treiber PoFxCompleteDevicePowerNotRequired aufgerufen hat , um einen DevicePowerNotRequiredCallback-Rückruf abzuschließen. Der DevicePowerRequiredCallback-Aufruf tritt nicht unbedingt als Ergebnis einer Aktion des Treibers auf, z. B. der Anforderung, dass eine Komponente in die aktive Bedingung geändert wird.

Beispiele

Um eine DevicePowerRequiredCallback-Rückrufroutine zu definieren, müssen Sie zunächst eine Funktionsdeklaration bereitstellen, die den Typ der Rückrufroutine identifiziert, die Sie definieren. Windows bietet eine Reihe von Rückruffunktionstypen für Treiber. Das Deklarieren einer Funktion mithilfe der Rückruffunktionstypen hilft der Codeanalyse für Treiber, der statischen Treiberüberprüfung (Static Driver Verifier , SDV) und anderen Überprüfungstools, Fehler zu finden, und es ist eine Voraussetzung für das Schreiben von Treibern für das Windows-Betriebssystem.

Um beispielsweise eine DevicePowerRequiredCallback-Rückrufroutine mit dem Namen MyDevicePowerRequiredCallbackzu definieren, verwenden Sie den typ PO_FX_DEVICE_POWER_REQUIRED_CALLBACK, wie in diesem Codebeispiel gezeigt:

PO_FX_DEVICE_POWER_REQUIRED_CALLBACK MyDevicePowerRequiredCallback;

Implementieren Sie dann Ihre Rückrufroutine wie folgt:

_Use_decl_annotations_
VOID
  MyDevicePowerRequiredCallback(
    PVOID Context
    )
  {
      // Function body
  }

Der PO_FX_DEVICE_POWER_REQUIRED_CALLBACK Funktionstyp ist in der Wdm.h-Headerdatei definiert. Um Fehler beim Ausführen der Codeanalysetools genauer zu identifizieren, fügen Sie die _Use_decl_annotations_ Anmerkung ihrer Funktionsdefinition hinzu. Die _Use_decl_annotations_ Anmerkung stellt sicher, dass die Anmerkungen verwendet werden, die auf den PO_FX_DEVICE_POWER_REQUIRED_CALLBACK Funktionstyp in der Headerdatei angewendet werden. Weitere Informationen zu den Anforderungen für Funktionsdeklarationen finden Sie unter Deklarieren von Funktionen mithilfe von Funktionsrollentypen für WDM-Treiber. Informationen zu _Use_decl_annotations_finden Sie unter Verhalten von Funktionen mit Anmerkungen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Unterstützt ab Windows 8.
Zielplattform Desktop
Kopfzeile wdm.h (include Wudfwdm.h)
IRQL Wird unter IRQL <= DISPATCH_LEVEL aufgerufen.

Weitere Informationen

DevicePowerNotRequiredCallback

PO_FX_DEVICE

PoFxCompleteDevicePowerNotRequired

PoFxRegisterDevice

PoFxReportDevicePoweredOn