Udostępnij przez


Stan urządzenia

Element DeviceState w DEVICE_CAPABILITIES jest tablicą wartości typu DEVICE_POWER_STATE, indeksowanych według wartości SYSTEM_POWER_STATE od PowerSystemWorking do PowerSystemShutdown. Każdy element tablicy zawiera maksymalny stan zasilania urządzenia (najwyższy poziom mocy), który może być obsługiwany dla stanu zasilania systemu oznaczonego przez indeks, lub PowerDeviceUnspecified, jeśli stan zasilania systemu nie jest obsługiwany.

Na przykład w systemie obsługującym tylko stany zasilania systemu S0, S4 i S5 tablica DeviceState dla urządzenia obsługującego tylko stany D0 i D3 zawiera wartości przedstawione w poniższej tabeli.

DeviceState, element Wartość

DeviceState[PowerSystemWorking]

PowerDeviceD0

DeviceState[PowerSystemSleeping1]

PowerDeviceUnspecified

DeviceState[PowerSystemSleeping2]

PowerDeviceUnspecified

DeviceState[PowerSystemSleeping3]

PowerDeviceUnspecified

DeviceState[PowerSystemHibernate]

PowerDeviceD3

DeviceState[PowerSystemShutdown]

PowerDeviceD3

W systemie obsługującym wszystkie stany zasilania systemu poniższa tabela pokazuje wartości tablicy dla urządzenia, które musi znajdować się w stanie D2 lub niższym, gdy system przechodzi do dowolnego pośredniego stanu uśpienia, oraz w stanie D3, gdy system przechodzi w stan hibernacji.

Element DeviceState Wartość

DeviceState[PowerSystemWorking]

PowerDeviceD0

DeviceState[PowerSystemSleeping1]

PowerDeviceD2

DeviceState[PowerSystemSleeping2]

PowerDeviceD2

DeviceState[PowerSystemSleeping3]

PowerDeviceD2

DeviceState[PowerSystemHibernate]

PowerDeviceD3

DeviceState[PowerSystemShutdown]

PowerDeviceD3

Należy pamiętać, że wpisy w tablicy DeviceState oznaczają najwyższy stan zasilania urządzenia, który może obsługiwać odpowiedni stan zasilania systemu. W poprzednim przykładzie urządzenie może być w stanie D3 dla dowolnego stanu zasilania systemu, w stanie D2 dla stanów zasilania systemu od PowerSystemWorking do PowerSystemSleeping3, i w stanie D1 dla stanu systemu PowerSystemWorking.

Filtr sterownika magistrali lub ACPI ustawia te wartości na podstawie możliwości węzła urządzenia nadrzędnego.

Ogólnie rzecz biorąc, sterowniki wyższego poziomu nie powinny zmieniać tych wartości. Jednak w rzadkich okolicznościach, w których taka zmiana jest konieczna, sterownik może określić stan o niższym poborze mocy niż ten zwrócony przez sterownik magistrali lub filtr ACPI. Załóżmy na przykład, że DeviceState[PowerSystemSleeping1] odpowiada PowerDeviceD2, jak w powyższej tabeli. Sterownik może zmienić tę wartość na PowerDeviceD3, ale nie na PowerDeviceD1 lub PowerDeviceD0.