Dela via


DeviceState

DeviceState-medlemmen i DEVICE_CAPABILITIES är en matris med DEVICE_POWER_STATE värden som indexeras av SYSTEM_POWER_STATE värden som sträcker sig från PowerSystemWorking till PowerSystemShutdown. Varje element i matrisen innehåller enhetens högsta möjliga energitillstånd som enheten kan stödja för systemets kraftläge som anges med indexet, eller PowerDeviceUnspecified om systemets kraftläge inte stöds.

I ett system som till exempel endast stöder S0-, S4- och S5-systemkrafttillstånd innehåller DeviceState-matrisen för en enhet som endast stöder D0- och D3-tillstånden de värden som visas i följande tabell.

DeviceState-element Värde

DeviceState[PowerSystemWorking]

PowerDeviceD0

DeviceState[PowerSystemSleeping1]

PowerDeviceUnspecified

DeviceState[PowerSystemSleeping2]

PowerDeviceUnspecified

DeviceState[PowerSystemSleeping3]

PowerDeviceUnspecified

DeviceState[PowerSystemHibernate]

PowerDeviceD3

DeviceState[PowerSystemShutdown]

PowerDeviceD3

I ett system som stöder alla systemkrafttillstånd visar följande tabell de värden som matrisen skulle innehålla för en enhet som måste vara i D2-tillstånd eller lägre när systemet övergår till något mellanliggande viloläge och i D3-tillståndet när systemet viloläge.

DeviceState-elementet Värde

DeviceState[PowerSystemWorking]

PowerDeviceD0

DeviceState[PowerSystemSleeping1]

PowerDeviceD2

DeviceState[PowerSystemSleeping2]

PowerDeviceD2

DeviceState[PowerSystemSleeping3]

PowerDeviceD2

DeviceState[PowerSystemHibernate]

PowerDeviceD3

DeviceState[PowerSystemShutdown]

PowerDeviceD3

Observera att posterna i DeviceState-matrisen anger det högsta enhetskrafttillstånd som enheten kan stödja för motsvarande systemkrafttillstånd. I föregående exempel kan enheten vara i tillstånd D3 för alla systemkrafttillstånd, tillstånd D2 för systemkrafttillstånd PowerSystemWorking via PowerSystemSleeping3 och tillstånd D1 för systemtillståndet PowerSystemWorking.

Bussdrivrutinen eller ACPI-filtret anger dessa värden baserat på funktionerna i den överordnade enhetsnoden.

Som en allmän regel bör drivrutiner på högre nivå inte ändra dessa värden. Men i de sällsynta fall då en sådan ändring är nödvändig kan en drivrutin ange ett lägre (lägre strömförbrukande) tillstånd än bussdrivrutinen eller ACPI-filtret som det ursprungligen returnerade. Anta till exempel att DeviceState[PowerSystemSleeping1] mappar till PowerDeviceD2, som i tabellen ovan. En drivrutin kan ändra det här värdet till PowerDeviceD3, men inte till PowerDeviceD1 eller PowerDeviceD0.