Condividi tramite


Funzione WdfDeviceGetSystemPowerAction (wdfdevice.h)

[Si applica a KMDF e UMDF]

Il metodo WdfDeviceGetSystemPowerAction restituisce l'azione di alimentazione del sistema , se presente, che si verifica attualmente 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 altre informazioni, vedere la sezione Osservazioni seguente. L'enumerazione POWER_ACTION è definita in wdm.h.

Se il driver fornisce un handle di oggetto non valido, si verifica un controllo di bug.

Osservazioni

A partire da WDF versione 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 dei criteri di alimentazione. I driver devono essere ricompilati con v31 o versione successiva per ottenere il nuovo comportamento seguente:

  • Se il dispositivo entra o esce da D0 a causa di S0 Inattiva (vedere WdfDeviceAssignS0IdleSettings) mentre è in corso una transizione di alimentazione del sistema non correlata, WdfDeviceGetSystemPowerAction potrebbe restituire PowerActionSleep. Questo problema è risolto nella versione 31 e ora restituisce PowerActionNone.

  • Quando il sistema si riattiva dalla sospensione ibrida (sospensione con un file di ibernazione), prima della versione 31, WdfDeviceGetSystemPowerAction sempre restituito PowerActionHibernate. Questa operazione è corretta nella versione 31 e ora restituisce:

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

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

Il driver deve chiamare WdfDeviceGetSystemPowerAction solo dalle funzioni di callback degli eventi chiamate dal framework quando il dispositivo viene immettendo un a basso consumo o tornando allo stato di lavoro.

Il valore restituito WdfDeviceGetSystemPowerAction dipende dalle situazioni seguenti:

  • Se il computer sta immettendo uno stato a basso consumo quando il driver chiama WdfDeviceGetSystemPowerAction, il metodo restituisce il motivo per cui il computer sta immettendo lo stato a basso consumo. Ad esempio, il metodo restituisce PowerActionSleep se il computer immette lo stato S1, S2 o S3 a basso consumo.
  • Se il computer torna allo stato di lavoro (S0) da uno stato a basso consumo quando il driver chiama WdfDeviceGetSystemPowerAction, il metodo restituisce il motivo per cui il computer ha immesso lo stato a basso consumo. Ad esempio, il metodo restituisce powerActionSleep se il computer lascia lo stato S1, S2 o S3 a basso consumo.
  • Se il computer viene acceso (dopo essere stato spento) quando il driver chiama WdfDeviceGetSystemPowerAction, il metodo restituisce PowerActionNone.
  • Se il dispositivo entra in uno stato di inattività a basso consumo o torna allo stato di lavoro (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 basso consumo, vedere un dispositivo entra in uno stato di Low-Power.

Esempi

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

POWER_ACTION SysPowerAction;

SysPowerAction = WdfDeviceGetSystemPowerAction(device);

Fabbisogno

Requisito Valore
piattaforma di destinazione Universale
versione minima di KMDF 1.9
versione minima di UMDF 2.0
intestazione wdfdevice.h (include Wdf.h)
libreria Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <= DISPATCH_LEVEL
regole di conformità DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)