Freigeben über


PO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK Rückruffunktion (wdm.h)

Die DevicePowerNotRequiredCallback Rückrufroutine benachrichtigt den Gerätetreiber, dass das Gerät nicht im D0-Energiezustand verbleiben muss.

Syntax

PO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK PoFxDevicePowerNotRequiredCallback;

void PoFxDevicePowerNotRequiredCallback(
  [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 Member der PO_FX_DEVICE Struktur angegeben, mit der der Treiber das Gerät mit dem Power Management Framework (PoFx) registriert hat. Dieser Kontext ist undurchsichtig für PoFx.

Rückgabewert

Nichts

Bemerkungen

Wenn PoFx die DevicePowerNotRequiredCallback- Routine des Treibers aufruft, muss der Treiber zuerst entscheiden, ob ein Übergang zu einem Dx-Zustand mit niedriger Leistung (durch Senden einer IRP_MN_SET_POWER Anforderung nach unten) oder im D0-Zustand verbleiben soll. Als Nächstes muss der Treiber den PoFxCompleteDevicePowerNotRequired Routine aufrufen, um PoFx zu benachrichtigen, dass der Treiber seine Antwort auf das DevicePowerNotRequiredCallback Rückruf abgeschlossen hat. Der Treiber kann PoFxCompleteDevicePowerNotRequired vor oder nach dem DevicePowerNotRequiredCallback- Routine zurückgeben.

Wenn sich ein Gerät im D0-Zustand befindet und der Fx-Zustand oder der Zustand "Aktiv/Leerlauf" einer Komponente im Gerät geändert wird, bewertet PoFx, ob das Gerät einen Dx-Zustand mit niedriger Leistung eingeben kann oder im D0-Zustand verbleiben muss. Wenn das Gerät einen Dx-Zustand mit geringem Stromverbrauch eingeben kann, ruft PoFx die DevicePowerNotRequiredCallback Routine des Treibers auf.

Wenn das Gerät als Reaktion auf einen DevicePowerNotRequiredCallback Rückruf in einen Dx-Zustand mit niedriger Leistung wechselt, aber PoFx später feststellt, dass das Gerät den D0-Zustand eingeben muss, ruft PoFx den DevicePowerRequiredCallback Routine des Treibers auf. Als Reaktion auf diesen Aufruf muss das Gerät den D0-Zustand eingeben.

Beispiele

Um eine DevicePowerNotRequiredCallback- Rückrufroutine zu definieren, müssen Sie zuerst eine Funktionsdeklaration bereitstellen, die den Typ der von Ihnen definierten Rückrufroutine identifiziert. Windows stellt eine Reihe von Rückruffunktionstypen für Treiber bereit. Durch das Deklarieren einer Funktion mithilfe der Rückruffunktionstypen können Codeanalyse für Treiber, statische Treiberüberprüfung (SDV) und andere Überprüfungstools Fehler finden, und es ist eine Anforderung zum Schreiben von Treibern für das Windows-Betriebssystem.

Wenn Sie beispielsweise eine DevicePowerNotRequiredCallback- Rückrufroutine definieren möchten, die MyDevicePowerNotRequiredCallbackheißt, verwenden Sie den PO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK Typ, wie in diesem Codebeispiel gezeigt:

PO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK MyDevicePowerNotRequiredCallback;

Implementieren Sie dann Ihre Rückrufroutine wie folgt:

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

Der PO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK Funktionstyp wird in der Wdm.h-Headerdatei definiert. Um Fehler genauer zu identifizieren, wenn Sie die Codeanalysetools ausführen, müssen Sie der Funktionsdefinition die _Use_decl_annotations_ Anmerkung hinzufügen. Die _Use_decl_annotations_ Anmerkung stellt sicher, dass die Anmerkungen, die auf den PO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK Funktionstyp in der Headerdatei angewendet werden, verwendet 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 Annotating Function Behavior.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Wird ab Windows 8 unterstützt.
Zielplattform- Desktop
Header- wdm.h (include Wudfwdm.h)
IRQL- Wird bei IRQL <= DISPATCH_LEVEL aufgerufen.

Siehe auch

DevicePowerRequiredCallback-

IRP_MN_SET_POWER

PO_FX_DEVICE

PoFxCompleteDevicePowerNotRequired

PoFxRegisterDevice