WDF_POWER_POLICY_S0_IDLE_CAPABILITIES-Enumeration (wdfdevice.h)

[Gilt für KMDF und UMDF]

Die WDF_POWER_POLICY_S0_IDLE_CAPABILITIES-Enumeration gibt die Funktionen an, die ein Gerät unterstützen kann, wenn es im Leerlauf in einen Energiesparmodus wechselt.

Syntax

typedef enum _WDF_POWER_POLICY_S0_IDLE_CAPABILITIES {
  IdleCapsInvalid = 0,
  IdleCannotWakeFromS0,
  IdleCanWakeFromS0,
  IdleUsbSelectiveSuspend
} WDF_POWER_POLICY_S0_IDLE_CAPABILITIES;

Konstanten

 
IdleCapsInvalid
Wert: 0
Nur zur internen Verwendung.
IdleCannotWakeFromS0
Das Gerät kann sich nicht selbst aus einem Energiesparzustand reaktivieren, während sich das System im Betriebszustand (S0) befindet.
IdleCanWakeFromS0
Das Gerät kann sich selbst aus einem Energiesparzustand reaktivieren, während sich das System im Betriebszustand (S0) befindet.
IdleUsbSelectiveSuspend
Das Gerät ist mit einem USB-Bus verbunden und unterstützt die selektive USB-Aussetzung. Verwenden Sie diesen Wert, wenn Ihr mit USB verbundenes Gerät sowohl das Leerlauf als auch das Aufwachen selbst unterstützt, während sich der Computer im Betriebszustand befindet. Wenn Ihr USB-Gerät nur den Leerlauf unterstützt, verwenden Sie IdleCannotWakeFromS0. (Treiber für USB-Geräte dürfen IdleCanWakeFromS0 nicht angeben.) Sehen Sie sich die Codebeispiele im folgenden Abschnitt Beispiele an.

Für Windows XP unterstützt das Framework das selektive Anhalten von USB nur, wenn die USB_CONFIGURATION_DESCRIPTOR-Struktur des Geräts anzeigt, dass das Gerät die Remotereaktivierung unterstützt. Für Windows Vista und höhere Versionen von Windows unterstützt das Framework das selektive Anhalten von USB, unabhängig davon, ob das Gerät die Remotereaktivierung unterstützt oder nicht.

Hinweise

Die WDF_POWER_POLICY_S0_IDLE_CAPABILITIES-Enumeration wird in der WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS-Struktur verwendet.

Beispiele

Die folgenden Codebeispiele zeigen, wie Sie die Unterstützung für den Leerlauf für ein USB-Gerät aktivieren. In jedem Fall bedeutet der STATUS_POWER_STATE_INVALID Rückgabewert, dass der Bustreiber gemeldet hat, dass das Gerät nicht selbst reaktiviert werden kann.

KMDF-Beispiel

WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_INIT(&idleSettings,
                                           IdleUsbSelectSuspend);
status = WdfDeviceAssignS0IdleSettings(device,
                                       &idleSettings);
if (status == STATUS_POWER_STATE_INVALID){
    //
    // The device probably does not support wake. 
    // It might support idle without wake.
    //
    idleSettings.IdleCaps = IdleCannotWakeFromS0;
    status = WdfDeviceAssignS0IdleSettings(device,
                                           &IdleSettings);
    if (!NT_SUCCESS(status) {...}
 }
else {...}

UMDF-Beispiel

hr = pIWDFDevice2->AssignS0IdleSettings(IdleUsbSelectSuspend,
                                        PowerDeviceD3,
                                        IDLEWAKE_TIMEOUT_MSEC,
                                        IdleAllowUserControl,
                                        WdfTrue);
if (hr == HRESULT_FROM_NT(STATUS_POWER_STATE_INVALID)){
    //
    // The device probably does not support wake. 
    // It might support idle without wake.
    //
    hr = pIWDFDevice2->AssignS0IdleSettings(IdleCannotWakeFromS0,
                                         PowerDeviceD3,
                                         IDLEWAKE_TIMEOUT_MSEC,
                                         IdleAllowUserControl,
                                         WdfTrue);
    if (!SUCCEEDED(hr)) {...}
}
else {...}

Anforderungen

Anforderung Wert
KMDF-Mindestversion 1.0
UMDF-Mindestversion 1.11
Kopfzeile wdfdevice.h (einschließen von Wdf.h)

Weitere Informationen

WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS