Freigeben über


PO_FX_COMPONENT_IDLE_CONDITION_CALLBACK Rückruffunktion (wdm.h)

Die ComponentIdleConditionCallback Callbackroutine benachrichtigt den Treiber, dass die angegebene Komponente einen Übergang von der aktiven Bedingung zur Leerlaufbedingung abgeschlossen hat.

Syntax

PO_FX_COMPONENT_IDLE_CONDITION_CALLBACK PoFxComponentIdleConditionCallback;

void PoFxComponentIdleConditionCallback(
  [in] PVOID Context,
  [in] ULONG Component
)
{...}

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.

[in] Component

Der Index, der die Komponente identifiziert. Dieser Parameter ist ein Index im Components Array in der PO_FX_DEVICE Struktur, mit der der Gerätetreiber das Gerät bei PoFx registriert hat. Wenn das Components Array N-Elemente enthält, reichen Komponentenindizes von 0 bis N-1.

Rückgabewert

Nichts

Bemerkungen

Wenn der Treiber nicht mehr auf eine Komponente zugreifen muss, die sich in der aktiven Bedingung befindet, sollte der Treiber die PoFxIdleComponent Routine aufrufen, um die Komponente in den Leerlaufzustand zu wechseln. Als Reaktion auf den PoFxIdleComponent Aufruf initiiert PoFx den Übergang zur Leerlaufbedingung und ruft dann die ComponentIdleConditionCallback Routine auf, um den Treiber zu benachrichtigen, wenn dieser Übergang abgeschlossen ist.

Der Treiber muss PoFxCompleteIdleCondition- als Reaktion auf jeden ComponentIdleConditionCallback- Rückruf aufrufen. Der PoFxCompleteIdleCondition- Aufruf kann entweder während des ComponentIdleConditionCallback- Rückrufs oder nach der Rückgabe des Rückrufs auftreten. Der Treiber sollte alle Arbeiten ausführen, die Zugriff auf die Hardwarekomponente erfordern, bevor der Aufruf von PoFxCompleteIdleCondition. Nach diesem Aufruf bleibt die Komponente möglicherweise nicht im F0-Energiezustand.

Auf eine Komponente kann nur dann sicher zugegriffen werden, wenn sich die Komponente in der aktiven Bedingung befindet. Verlassen Sie sich nicht auf den Fx-Energiezustand einer Komponente, um zu bestimmen, ob auf die Komponente zugegriffen werden kann. Wenn sich die Komponente im F0-Zustand befindet und sich in der Leerlaufbedingung befindet, ist die Komponente möglicherweise in der Lage, zu einem anderen Fx-Zustand zu wechseln.

Beispiele

Um eine ComponentIdleConditionCallback- 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.

Um beispielsweise eine ComponentIdleConditionCallback- Rückrufroutine zu definieren, die MyComponentIdleConditionCallbackbenannt ist, verwenden Sie den PO_FX_COMPONENT_IDLE_CONDITION_CALLBACK Typ wie in diesem Codebeispiel gezeigt:

PO_FX_COMPONENT_IDLE_CONDITION_CALLBACK MyComponentIdleConditionCallback;

Implementieren Sie dann Ihre Rückrufroutine wie folgt:

_Use_decl_annotations_
VOID
  MyComponentIdleConditionCallback(
    PVOID Context,
    ULONG Component
    )
  {
      // Function body
  }

Der PO_FX_COMPONENT_IDLE_CONDITION_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 Funktionstyp PO_FX_COMPONENT_IDLE_CONDITION_CALLBACK 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

PO_FX_DEVICE

PoFxCompleteIdleCondition