EVT_WDF_DEVICE_ARM_WAKE_FROM_S0 Rückruffunktion (wdfdevice.h)

[Gilt für KMDF und UMDF]

Die EvtDeviceArmWakeFromS0-Ereignisrückruffunktion eines Treibers unterstützt ein Gerät (d.a. aktiviert), sodass es ein Aktivierungssignal auslösen kann, während es sich in einem Gerätezustand mit geringem Stromverbrauch befindet, wenn das System im Systemarbeitszustand (S0) verbleibt.

Syntax

EVT_WDF_DEVICE_ARM_WAKE_FROM_S0 EvtWdfDeviceArmWakeFromS0;

NTSTATUS EvtWdfDeviceArmWakeFromS0(
  [in] WDFDEVICE Device
)
{...}

Parameter

[in] Device

Ein Handle für ein Framework-Geräteobjekt.

Rückgabewert

Wenn der Vorgang erfolgreich ist, muss die Rückruffunktion EvtDeviceArmWakeFromS0 STATUS_SUCCESS oder einen anderen status Wert zurückgeben, für den NT_SUCCESS(status) gleich TRUE ist. Andernfalls muss ein status Wert zurückgegeben werden, für den NT_SUCCESS(status) gleich FALSE ist.

Wenn NT_SUCCESS(status) gleich FALSE ist, ruft das Framework die EvtDeviceDisarmWakeFromS0-Rückruffunktion des Treibers nicht auf. (Das Framework meldet keinen Gerätefehler an den PnP-Manager.)

Hinweise

Um eine EvtDeviceArmWakeFromS0-Rückruffunktion zu registrieren, muss ein Treiber WdfDeviceInitSetPowerPolicyEventCallbacks aufrufen. Darüber hinaus muss der Treiber IdleCanWakeFromS0 im IdleCaps-Member seiner WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS-Struktur festlegen.

Die Rückruffunktion EvtDeviceArmWakeFromS0 verarbeitet gerätespezifische Vorgänge, die erforderlich sind, damit das Gerät ein externes Ereignis erkennen kann, das ein Aktivierungssignal im Bus auslöst. Die EvtDeviceEnableWakeAtBus-Rückruffunktion des Bustreibers verarbeitet busspezifische Vorgänge, z. B. das Aktivieren des PME-Signals (Power Management Event) des PCI-Busses.

Wenn der Treiber eine EvtDeviceArmWakeFromS0-Rückruffunktion registriert hat, ruft das Framework diese auf, während sich das Gerät noch im Gerätestromzustand D0 befindet, bevor der Bustreiber den Energiezustand des Geräts senkt, aber nachdem das Framework im Namen des Treibers eine Wait/Wake-IRP gesendet hat.

Der Prozess erfolgt in der folgenden Reihenfolge:

  1. Das Framework bestimmt, dass sich das Gerät für eine voreingestellte Zeit im Leerlauf befindet.
  2. Das Framework ruft die Rückruffunktion EvtDeviceArmWakeFromS0 des Treibers auf.
  3. Das Framework fordert den Treiber für den Bus des Geräts an, um die Leistung des Geräts zu verringern.
Unmittelbar bevor Ihr Gerät in einen Energiesparzustand wechselt, ruft das Framework die Rückruffunktion EvtDeviceD0Exit Ihres Treibers auf.

Weitere Informationen dazu, wann das Framework diese Rückruffunktion aufruft, finden Sie unter PnP- und Energieverwaltungsszenarien.

Sie müssen keine EvtDeviceArmWakeFromS0-Rückruffunktion bereitstellen, wenn Ihr Gerät:

  • Ist ein USB-Gerät, das "selektives Anhalten" unterstützt.
  • Kann nicht heruntergefahren werden, während das System vollständig mit Strom versorgt wird.
  • Erfordert keine speziellen Hardwarevorgänge, die es dem Gerät ermöglichen, ein Aktivierungssignal auszulösen.
Wenn Ihr Gerät USB-"selektives Anhalten" unterstützt und Ihr Treiber IdleUsbSelectiveSuspend im IdleCaps-Member seiner WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS-Struktur festlegt, sendet das Framework eine Anforderung zum selektiven Anhalten an den USB-Bustreiber, wenn sich das Gerät für einen voreingestellten Zeitraum im Leerlauf befindet.

Weitere Informationen zu dieser Rückruffunktion finden Sie unter Unterstützung des Leerlauf-Herunterschaltens.

Anforderungen

Anforderung Wert
Zielplattform Universell
KMDF-Mindestversion 1.0
UMDF-Mindestversion 2.0
Kopfzeile wdfdevice.h (einschließen von Wdf.h)
IRQL PASSIVE_LEVEL

Weitere Informationen

EvtDeviceArmWakeFromSx

EvtDeviceDisarmWakeFromS0