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 MyComponentIdleConditionCallback
benannt 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. |