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