DeviceState
Il membro DeviceState di DEVICE_CAPABILITIES è una matrice di valoriDEVICE_POWER_STATE indicizzati da valori SYSTEM_POWER_STATE che vanno da PowerSystemWorking a PowerSystemShutdown. Ogni elemento della matrice contiene lo stato massimo (con alimentazione più elevata) del dispositivo che il dispositivo può supportare per lo stato di alimentazione del sistema denotato dall'indice o PowerDeviceUnspecified se lo stato di alimentazione del sistema non è supportato.
Ad esempio, in un sistema che supporta solo gli stati di alimentazione di sistema S0, S4 e S5, la matrice DeviceState per un dispositivo che supporta solo gli stati D0 e D3 contiene i valori visualizzati nella tabella seguente.
Elemento DeviceState | Valore |
---|---|
DeviceState[PowerSystemWorking] |
PowerDeviceD0 |
DeviceState[PowerSystemSleeping1] |
PowerDeviceUnspecified |
DeviceState[PowerSystemSleeping2] |
PowerDeviceUnspecified |
DeviceState[PowerSystemSleeping3] |
PowerDeviceUnspecified |
DeviceState[PowerSystemHibernate] |
PowerDeviceD3 |
DeviceState[PowerSystemShutdown] |
PowerDeviceD3 |
In un sistema che supporta tutti gli stati di alimentazione del sistema, la tabella seguente elenca i valori che la matrice contiene per un dispositivo che deve trovarsi nello stato D2 o inferiore ogni volta che il sistema passa a qualsiasi stato di sospensione intermedio e nello stato D3 quando il sistema si iberna.
Elemento DeviceState | Valore |
---|---|
DeviceState[PowerSystemWorking] |
PowerDeviceD0 |
DeviceState[PowerSystemSleeping1] |
PowerDeviceD2 |
DeviceState[PowerSystemSleeping2] |
PowerDeviceD2 |
DeviceState[PowerSystemSleeping3] |
PowerDeviceD2 |
DeviceState[PowerSystemHibernate] |
PowerDeviceD3 |
DeviceState[PowerSystemShutdown] |
PowerDeviceD3 |
Si noti che le voci nella matrice DeviceState indicano lo stato di alimentazione del dispositivo più alto che il dispositivo può supportare per lo stato di alimentazione del sistema corrispondente. Nell'esempio precedente il dispositivo potrebbe trovarsi nello stato D3 per qualsiasi stato di alimentazione del sistema, stato D2 per gli stati di alimentazione del sistema PowerSystemWorking tramite PowerSystemSleeping3 e stato D1 per lo stato del sistema PowerSystemWorking.
Il driver del bus o il filtro ACPI imposta questi valori in base alle funzionalità del nodo dispositivo padre.
Come regola generale, i driver di livello superiore non devono modificare questi valori. Tuttavia, nelle rare circostanze in cui tale modifica è necessaria, un driver può specificare uno stato inferiore (meno alimentato) rispetto al driver del bus o al filtro ACPI originariamente restituito. Si supponga, ad esempio, che DeviceState[PowerSystemSleeping1] mappa a PowerDeviceD2, come nella tabella precedente. Un driver può modificare questo valore in PowerDeviceD3, ma non in PowerDeviceD1 o PowerDeviceD0.