PO_FX_COMPONENT_ACTIVE_CONDITION_CALLBACK Rückruffunktion (wdm.h)
Die ComponentActiveConditionCallback-Rückrufroutine benachrichtigt den Treiber darüber, 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, die der Treiber zum Registrieren des Geräts beim Power Management Framework (PoFx) verwendet hat. Dieser Kontext ist für PoFx undurchsichtig.
[in] Component
Gibt den Index an, 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
Auf die Hardwareregister einer Komponente kann nur 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.
Um Zugriff auf eine Komponente zu erhalten, die sich im Leerlauf befindet, kann der Treiber die PoFxActivateComponent-Routine aufrufen, um die Komponente zur aktiven Bedingung zu wechseln. Wenn sich die Komponente nicht bereits in der aktiven Bedingung befindet, 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 Mit dem Namen PoFxActivateComponent den Übergang initiieren soll. Beispielsweise kann der Windows-Kernel die Komponente im Namen des Treibers aktivieren, bevor ein Plug & Play IRP oder ein Systemset-Power-IRP an den Treiber gesendet wird.
Beispiele
Um eine ComponentActiveConditionCallback-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 ComponentActiveConditionCallback-Rückrufroutine mit dem Namen MyComponentActiveConditionCallback
zu definieren, 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 ist in der Wdm.h-Headerdatei 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_ACTIVE_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. |