PO_FX_COMPONENT_IDLE_CONDITION_CALLBACK Rückruffunktion (wdm.h)

Die ComponentIdleConditionCallback-Rückrufroutine 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, die der Treiber zum Registrieren des Geräts beim Power Management Framework (PoFx) verwendet hat. Dieser Kontext ist für PoFx undurchsichtig.

[in] Component

Der Index, der die Komponente identifiziert. Dieser Parameter ist ein Index in das Array Components in der PO_FX_DEVICE Struktur, die der Gerätetreiber zum Registrieren des Geräts bei PoFx verwendet hat. Wenn das Komponentenarray N-Elemente enthält, reichen die Komponentenindizes von 0 bis N–1.

Rückgabewert

Keine

Bemerkungen

Wenn der Treiber nicht mehr auf eine Komponente zugreifen muss, die sich im aktiven Zustand befindet, sollte der Treiber die PoFxIdleComponent-Routine aufrufen, um die Komponente in die Leerlaufbedingung 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 erfolgen. Der Treiber sollte vor dem Aufruf von PoFxCompleteIdleCondition alle Arbeiten erledigen, die Zugriff auf die Hardwarekomponente erfordern. Nach diesem Aufruf verbleibt die Komponente möglicherweise nicht im Energiezustand F0.

Auf eine Komponente kann nur dann sicher zugegriffen werden, wenn sich die Komponente im aktiven Zustand 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 Zustand F0 befindet und sich im Leerlauf befindet, wird die Komponente möglicherweise in einen anderen Fx-Zustand wechseln.

Beispiele

Um eine ComponentIdleConditionCallback-Rückrufroutine zu definieren, müssen Sie zunächst eine Funktionsdeklaration bereitstellen, die den Typ der von Ihnen definierten Rückrufroutine identifiziert. 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 Anforderung zum Schreiben von Treibern für das Windows-Betriebssystem.

Um beispielsweise eine ComponentIdleConditionCallback-Rückrufroutine mit dem Namen MyComponentIdleConditionCallbackzu definieren, verwenden Sie den typ PO_FX_COMPONENT_IDLE_CONDITION_CALLBACK, 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 ist in der Headerdatei Wdm.h 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_COMPONENT_IDLE_CONDITION_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 Annotating Function Behavior.

Anforderungen

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

Weitere Informationen

PO_FX_DEVICE

PoFxCompleteIdleCondition