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) |