PO_FX_COMPONENT_ACTIVE_CONDITION_CALLBACK Rückruffunktion (wdm.h)
Die ComponentActiveConditionCallback Rückrufroutine benachrichtigt den Treiber, dass die angegebene Komponente einen Übergang von der Leerlaufbedingung zur aktiven Bedingung abgeschlossen hat.
Syntax
PO_FX_COMPONENT_ACTIVE_CONDITION_CALLBACK PoFxComponentActiveConditionCallback;
void PoFxComponentActiveConditionCallback(
[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
Gibt den Index an, 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
Auf die Hardwareregister einer Komponente kann nur 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.
Um Zugriff auf eine Komponente zu erhalten, die sich im Leerlauf befindet, kann der Treiber die PoFxActivateComponent Routine aufrufen, um die Komponente in den aktiven Zustand zu wechseln. Wenn die Komponente noch nicht in der aktiven Bedingung enthalten ist, wenn PoFxActivateComponent aufgerufen wird, initiiert PoFx den Übergang zur aktiven Bedingung und ruft dann die ComponentActiveConditionCallback- Routine auf, um den Treiber zu benachrichtigen, wenn der Übergang abgeschlossen ist.
Der Treiber empfängt einen ComponentActiveConditionCallback Rückruf, wenn die Komponente einen Übergang zur aktiven Bedingung abgeschlossen hat, unabhängig davon, ob der Treiber PoFxActivateComponent aufgerufen wird, um den Übergang zu initiieren. Beispielsweise kann der Windows-Kernel die Komponente im Namen des Treibers aktivieren, bevor ein Plug and Play IRP- oder ein system set-power IRP- an den Treiber gesendet wird.
Beispiele
Um eine ComponentActiveConditionCallback- 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 ComponentActiveConditionCallback Rückrufroutine zu definieren, die MyComponentActiveConditionCallback
benannt ist, verwenden Sie den PO_FX_COMPONENT_ACTIVE_CONDITION_CALLBACK Typ, wie in diesem Codebeispiel gezeigt:
PO_FX_COMPONENT_ACTIVE_CONDITION_CALLBACK MyComponentActiveConditionCallback;
Implementieren Sie dann Ihre Rückrufroutine wie folgt:
_Use_decl_annotations_
VOID
MyComponentActiveConditionCallback(
PVOID Context,
ULONG Component
)
{
// Function body
}
Der PO_FX_COMPONENT_ACTIVE_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_ACTIVE_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. |