Condividi tramite


EVT_WDF_DEVICE_ARM_WAKE_FROM_S0 funzione di callback (wdfdevice.h)

[Si applica a KMDF e UMDF]

EvtDeviceArmWakeFromS0 di un driver , ovvero abilita, un dispositivo in modo che possa attivare un segnale di riattivazione in uno stato del dispositivo a basso consumo, se il sistema rimane nello stato di funzionamento del sistema (S0).

Sintassi

EVT_WDF_DEVICE_ARM_WAKE_FROM_S0 EvtWdfDeviceArmWakeFromS0;

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

Parametri

[in] Device

Handle per un oggetto dispositivo framework.

Valore restituito

Se l'operazione ha esito positivo, la funzione di callback EvtDeviceArmWakeFromS0 deve restituire STATUS_SUCCESS o un altro valore di stato per cui NT_SUCCESS(status) è true. In caso contrario, deve restituire un valore di stato per il quale NT_SUCCESS(status) è uguale a FALSE.

Se NT_SUCCESS(status) è FALSE, il framework non chiama la funzione di callback EvtDeviceDisarmWakeFromS0 del driver. Il framework non segnala un errore del dispositivo al gestore PnP.

Commenti

Per registrare una funzione di callback EvtDeviceArmWakeFromS0 , un driver deve chiamare WdfDeviceInitSetPowerPolicyEventCallbacks. Inoltre, il driver deve impostare IdleCanWakeFromS0 nel membro IdleCaps della relativa struttura WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS .

La funzione di callback EvtDeviceArmWakeFromS0 gestisce operazioni specifiche del dispositivo necessarie per consentire al dispositivo di rilevare un evento esterno che attiva un segnale di riattivazione sul bus. La funzione di callback EvtDeviceEnableWakeAtBus del conducente del bus gestisce operazioni specifiche del bus, ad esempio l'abilitazione del segnale PME (Power Management Event) del bus PCI.

Se il driver ha registrato una funzione di callback EvtDeviceArmWakeFromS0 , il framework lo chiama mentre il dispositivo è ancora nello stato di alimentazione del dispositivo D0, prima che il driver del bus abbassa lo stato di alimentazione del dispositivo, ma dopo che il framework ha inviato un IRP di attesa/riattivazione per conto del driver.

Il processo si verifica nella sequenza seguente:

  1. Il framework determina che il dispositivo è rimasto inattivo per un periodo di tempo preimpostato.
  2. Il framework chiama la funzione di callback EvtDeviceArmWakeFromS0 del driver.
  3. Il framework richiede al driver del bus del dispositivo di ridurre l'alimentazione del dispositivo.
Immediatamente prima che il dispositivo entri in uno stato di bassa potenza, il framework chiamerà la funzione di callback EvtDeviceD0Exit del driver.

Per altre informazioni sui casi in cui il framework chiama questa funzione di callback, vedere Scenari di risparmio energia e PnP.

Non è necessario fornire una funzione di callback EvtDeviceArmWakeFromS0 se il dispositivo:

  • Dispositivo USB che supporta la "sospensione selettiva".
  • Non può essere spento mentre il sistema rimane completamente alimentato.
  • Non richiede operazioni hardware speciali che consentono al dispositivo di attivare un segnale di riattivazione.
Se il dispositivo supporta la "sospensione selettiva" USB e se il driver imposta IdleUsbSelectiveSuspend nel membro IdleCaps della relativa struttura di WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS , il framework invia una richiesta di sospensione selettiva al driver del bus USB quando il dispositivo è rimasto inattivo per un periodo di tempo preimpostato.

Per altre informazioni su questa funzione di callback, vedere Supporto dell'alimentazione inattiva.

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Versione KMDF minima 1.0
Versione UMDF minima 2,0
Intestazione wdfdevice.h (include Wdf.h)
IRQL PASSIVE_LEVEL

Vedi anche

EvtDeviceArmWakeFromSx

EvtDeviceDisarmWakeFromS0