PO_FX_DEVICE_POWER_REQUIRED_CALLBACK Rückruffunktion (wdm.h)
Die DevicePowerRequiredCallback Rückrufroutine benachrichtigt den Gerätetreiber, dass das Gerät in den D0-Energiezustand wechseln und verbleiben muss.
Syntax
PO_FX_DEVICE_POWER_REQUIRED_CALLBACK PoFxDevicePowerRequiredCallback;
void PoFxDevicePowerRequiredCallback(
[in] PVOID Context
)
{...}
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.
Rückgabewert
Nichts
Bemerkungen
Nachdem PoFx die DevicePowerRequiredCallback- Routine des Treibers aufgerufen hat, muss der Treiber einen Übergang zum D0-Zustand initiieren, indem ein D0 IRP (eine IRP_MN_SET_POWER Anforderung) an den Gerätestapel gesendet wird, wenn sich das Gerät nicht bereits im D0-Zustand befindet. Nachdem der Treiber die Behandlung dieser Anforderung abgeschlossen hat (und alle niedrigeren Treiber abgeschlossen), muss der Treiber die PoFxReportDevicePoweredOn Routine aufrufen. Der PoFxReportDevicePoweredOn ruft PoFx auf, dass das Gerät seine Antwort auf den DevicePowerRequiredCallback Anruf abgeschlossen hat. Der Treiber kann PoFxReportDevicePoweredOn während oder nach dem DevicePowerRequiredCallback Anruf aufrufen.
Jedes Mal, wenn die DevicePowerRequiredCallback Routine aufgerufen wird, muss der Treiber reagieren, indem er PoFxReportDevicePoweredOnaufruft. Der PoFxReportDevicePoweredOn Anruf kann entweder während oder nach dem DevicePowerRequiredCallback Anruf erfolgen. Der Treiber muss PoFxReportDevicePoweredOn aufrufen, unabhängig davon, ob kein D0 IRP erforderlich ist, die D0 IRP-Anforderung fehlschlägt oder ob die verteilte D0-IRP erfolgreich ist oder fehlschlägt.
PoFx ruft die DevicePowerRequiredCallback- Routine nur auf, wenn PoFx zuvor die DevicePowerNotRequiredCallback-Routine aufgerufen hat, um den Treiber darüber zu informieren, dass das Gerät nicht erforderlich war, um im D0-Zustand zu bleiben.
Der Aufruf der DevicePowerRequiredCallback- Routine kann jederzeit auftreten, nachdem der Treiber PoFxCompleteDevicePowerNotRequired aufgerufen hat, um einen DevicePowerNotRequiredCallback Rückruf abzuschließen. Der DevicePowerRequiredCallback- Aufrufs tritt nicht unbedingt als Ergebnis einer Vom Treiber ausgeführten Aktion auf, z. B. das Anfordern einer Änderung einer Komponente an die aktive Bedingung.
Beispiele
Um eine DevicePowerRequiredCallback- Rückrufroutine zu definieren, müssen Sie zunächst 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 DevicePowerRequiredCallback- Rückrufroutine zu definieren, die MyDevicePowerRequiredCallback
heißt, verwenden Sie den PO_FX_DEVICE_POWER_REQUIRED_CALLBACK Typ, wie in diesem Codebeispiel gezeigt:
PO_FX_DEVICE_POWER_REQUIRED_CALLBACK MyDevicePowerRequiredCallback;
Implementieren Sie dann Ihre Rückrufroutine wie folgt:
_Use_decl_annotations_
VOID
MyDevicePowerRequiredCallback(
PVOID Context
)
{
// Function body
}
Der PO_FX_DEVICE_POWER_REQUIRED_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_DEVICE_POWER_REQUIRED_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
DevicePowerNotRequiredCallback-