WdfPdoInitRemovePowerDependencyOnParent-Funktion (wdfpdo.h)

Die WdfPdoInitRemovePowerDependencyOnParent-Methode entfernt die im Abschnitt Hinweise beschriebene Energieabhängigkeit.

Syntax

void WdfPdoInitRemovePowerDependencyOnParent(
  PWDFDEVICE_INIT DeviceInit
);

Parameter

DeviceInit

Ein Zeiger auf eine WDFDEVICE_INIT-Struktur .

Rückgabewert

Keine

Bemerkungen

Im Allgemeinen erfordert das Framework, dass ein übergeordneter Bustreiber in den D0 Gerätestromzustand wechselt, bevor ein untergeordnetes Gerät in D0 wechselt, und auf ähnliche Weise, dass ein untergeordnetes Gerät D0 verlässt, bevor das übergeordnete Gerät D0 verlässt.

Dieses Verhalten ist jedoch möglicherweise nicht erwünscht, insbesondere wenn es sich bei dem untergeordneten Gerät um ein virtuelles Gerät handelt, das keine echte Hardware darstellt. Beim Herunterschalten von S0 im Leerlauf ist der Energiezustand des untergeordneten Geräts für das übergeordnete Gerät möglicherweise nicht relevant. Tatsächlich hat das untergeordnete Gerät möglicherweise keinen Grund, die S0-Leerlauferkennung durchzuführen. In diesem Fall wäre es für das übergeordnete Gerät besser, basierend auf der E/A-Aktivität zwischen D0 und Dx zu wechseln, anstatt vom Energiezustand des untergeordneten Geräts abhängig zu sein.

Das Entfernen der Energieabhängigkeit hat die folgenden Auswirkungen auf den Bustreiber:

  • Die PDO-PnP/Power-Rückrufe werden möglicherweise ausgeführt, während sich das übergeordnete Gerät in Dx befindet.
  • Die PDO-Rückrufe enable/disable-wake-at-bus können ausgeführt werden, während sich das übergeordnete Gerät in Dx befindet.
  • Eine Anforderung, die von einer energieverwalteten Warteschlange auf der PDO (vorausgesetzt, die PDO ist der Besitzer der Energierichtlinie) an eine nicht energieverwaltete Warteschlange in der FDO weitergeleitet wird, kann während sich der Bustreiber in Dx befindet, weitergeleitet werden.
  • Der untergeordnete Stapel führt Energiezustandsübergänge unabhängig vom übergeordneten Stapel durch. Dies umfasst Szenarien wie schnelles Fortsetzen, in denen der untergeordnete Stapel seinen S-IRP erhält und sogar die Verarbeitung seines D-IRP beendet, bevor der übergeordnete Stapel die Verarbeitung seines eigenen D-IRP beendet.

Um die Energieabhängigkeit zu entfernen, kann der Bustreiber WdfPdoInitRemovePowerDependencyOnParent aufrufen, wenn er die PDO für das untergeordnete Gerät erstellt.

Diese Funktion führt keine Aktion aus, wenn der übergeordnete Bustreiber nicht der Besitzer der Energierichtlinie des übergeordneten Gerätestapels ist.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 10, Version 2004
KMDF-Mindestversion 1.29
Kopfzeile wdfpdo.h (einschließen von Wdf.h)
Bibliothek Wdf01000.sys (KMDF)
IRQL PASSIVE_LEVEL