DeviceState
DEVICE_CAPABILITIES の DeviceState メンバーは DEVICE_POWER_STATE 値の配列で、PowerSystemWorking から PowerSystemShutdown までの SYSTEM_POWER_STATE 値によってインデックスが付けられています。 配列の各要素には、インデックスで示されるシステム電源状態に対してデバイスがサポートできる最大 (最高電力) デバイスの電源状態、または システムの電源状態がサポートされていない場合は PowerDeviceUnspecified が含まれます。
たとえば、S0、S4、S5 のシステム電源状態のみをサポートするシステムでは、D0 および D3 状態のみをサポートするデバイスの DeviceState 配列には、次の表に示す値が含まれています。
DeviceState 要素 | 値 |
---|---|
DeviceState[PowerSystemWorking] |
PowerDeviceD0 |
DeviceState[PowerSystemSleeping1] |
PowerDeviceUnspecified |
DeviceState[PowerSystemSleeping2] |
PowerDeviceUnspecified |
DeviceState[PowerSystemSleeping3] |
PowerDeviceUnspecified |
DeviceState[PowerSystemHibernate] |
PowerDeviceD3 |
DeviceState[PowerSystemShutdown] |
PowerDeviceD3 |
システムのすべての電源状態をサポートするシステムでは、次の表に、システムが中間スリープ状態になるときは常に D2 状態以下でなければならず、システムが休止状態になるときは D3 状態でなければならないデバイスの配列に含まれる値を示します。
DeviceState 要素 | 値 |
---|---|
DeviceState[PowerSystemWorking] |
PowerDeviceD0 |
DeviceState[PowerSystemSleeping1] |
PowerDeviceD2 |
DeviceState[PowerSystemSleeping2] |
PowerDeviceD2 |
DeviceState[PowerSystemSleeping3] |
PowerDeviceD2 |
DeviceState[PowerSystemHibernate] |
PowerDeviceD3 |
DeviceState[PowerSystemShutdown] |
PowerDeviceD3 |
DeviceState 配列内のエントリは、デバイスが対応するシステム電源状態をサポートできる最大のデバイス電源状態を示します。 前述の例では、デバイスはどのシステム電源状態でも状態 D3 になることができ、システム電源状態 PowerSystemWorking ~ PowerSystemSleeping3, では状態 D2、システム状態 PowerSystemWorking では状態 D1 になることができます。
バス ドライバーまたは ACPI フィルターは、親デバイス ノードの機能に基づいてこれらの値を設定します。
原則として、上位レベルのドライバーはこれらの値を変更しないでください。 ただし、まれにこのような変更が必要な状況では、ドライバーは、最初に返されたバス ドライバーまたは ACPI フィルターよりも低い (電力量が少ない) 状態を指定できます。 たとえば、上の表のように、DeviceState[PowerSystemSleeping1] が PowerDeviceD2 にマップされているとします。 ドライバーは、この値を PowerDeviceD3 に変更できますが、PowerDeviceD1 や PowerDeviceD0 には変更できません。