Funzione WdfDeviceGetSystemPowerAction (wdfdevice.h)

[Si applica a KMDF e UMDF]

Il metodo WdfDeviceGetSystemPowerAction restituisce l'azione di alimentazione del sistema, se presente, che si sta verificando per il computer.

Sintassi

POWER_ACTION WdfDeviceGetSystemPowerAction(
  [in] WDFDEVICE Device
);

Parametri

[in] Device

Handle per un oggetto dispositivo framework.

Valore restituito

WdfDeviceGetSystemPowerAction restituisce un valore enumeratore POWER_ACTION tipizzato. Il valore indica l'azione di alimentazione del sistema attualmente in corso per il computer. Per ulteriori informazioni, vedere la sezione Osservazioni successiva. L'enumerazione POWER_ACTION è definita in wdm.h.

Un controllo di bug si verifica se il driver fornisce un handle di oggetti non valido.

Commenti

A partire dalla versione WDF 1.31/2.31 (denominata "v31"), WdfDeviceGetSystemPowerAction è stato aggiornato per segnalare in modo più accurato l'azione di alimentazione del sistema quando il dispositivo è il proprietario del criterio di alimentazione. I driver devono essere ricompilati con v31 o versioni successive per ottenere il nuovo comportamento seguente:

  • Se il dispositivo entra o chiude D0 a causa di S0 Idle (vedere WdfDeviceAssignS0IdleSettings) mentre una transizione di alimentazione del sistema non correlata è in corso, WdfDeviceGetSystemPowerAction potrebbe restituire PowerActionSleep. Questa operazione viene risolta nella versione 31 e ora restituisce PowerActionNone.

  • Quando il sistema viene riattivato da Sospensione ibrida (sospensione con un file di ibernazione), prima di v31, WdfDeviceGetSystemPowerAction ha sempre restituito PowerActionHibernate. Questa operazione viene risolta nella versione 31 e ora restituisce:

    • PowerActionSleep se si riattiva senza perdita di energia, il che significa che il sistema rimane in S3
    • PowerActionHibernate se si riattiva dopo la perdita di energia, il sistema viene ripreso dal file di ibernazione

Il metodo WdfDeviceGetSystemPowerAction consente a un driver di determinare se si sta verificando la transizione di alimentazione di un dispositivo perché il dispositivo è inattiva (o sveglia) o perché l'intero computer sta immettendo (o lasciando) uno stato di bassa potenza.

Il driver deve chiamare WdfDeviceGetSystemPowerAction solo dalle funzioni di callback dell'evento che il framework chiama quando il dispositivo immette uno stato di bassa potenza o restituisce lo stato di lavoro.

Il valore restituito da WdfDeviceGetSystemPowerAction dipende dalle situazioni seguenti:

  • Se il computer sta immettendo uno stato a bassa potenza quando il driver chiama WdfDeviceGetSystemPowerAction, il metodo restituisce il motivo per cui il computer sta immettendo lo stato a bassa potenza. Ad esempio, il metodo restituisce PowerActionSleep se il computer immette lo stato S1, S2 o S3 a bassa potenza.
  • Se il computer restituisce lo stato funzionante (S0) da uno stato a bassa potenza quando il driver chiama WdfDeviceGetSystemPowerAction, il metodo restituisce il motivo per cui il computer ha immesso lo stato a bassa potenza. Ad esempio, il metodo restituisce PowerActionSleep se il computer lascia lo stato S1, S2 o S3 a bassa potenza.
  • Se il computer viene attivato (dopo essere stato disattivato) quando il driver chiama WdfDeviceGetSystemPowerAction, il metodo restituisce PowerActionNone.
  • Se il dispositivo immette uno stato di inattività a bassa potenza o torna allo stato funzionante (D0) quando il driver chiama WdfDeviceGetSystemPowerAction, mentre il resto del sistema rimane allo stato funzionante (S0), il metodo restituisce PowerActionNone.
  • Se il computer e il dispositivo si trovano entrambi negli stati di lavoro quando il driver chiama WdfDeviceGetSystemPowerAction, il metodo restituisce PowerActionNone.
Per altre informazioni sugli stati a bassa potenza, vedere Un dispositivo immette uno stato di Low-Power.

Esempio

Nell'esempio di codice seguente viene ottenuta l'attività di transizione di alimentazione attualmente eseguita per il computer.

POWER_ACTION SysPowerAction;

SysPowerAction = WdfDeviceGetSystemPowerAction(device);

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Versione KMDF minima 1,9
Versione UMDF minima 2,0
Intestazione wdfdevice.h (includere Wdf.h)
Libreria Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <= DISPATCH_LEVEL
Regole di conformità DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)