DEVICE_CAPABILITIES の DeviceState メンバーは、PowerSystemWorking から PowerSystemShutdown までのSYSTEM_POWER_STATE値によってインデックス付けされるDEVICE_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 |
システムのすべての電源状態をサポートするシステムでは、次の表に、システムがいずれかの中間スリープ状態になり、システムが休止状態になると D3 状態になるたびに、D2 状態以下である必要があるデバイスの配列に含まれる値を示します。
| 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 には変更できません。