WDF_DEVICE_POWER_CAPABILITIES 構造体 (wdfdevice.h)

[KMDF と UMDF に適用]

WDF_DEVICE_POWER_CAPABILITIES構造では、デバイスの電源機能について説明します。

構文

typedef struct _WDF_DEVICE_POWER_CAPABILITIES {
  ULONG              Size;
  WDF_TRI_STATE      DeviceD1;
  WDF_TRI_STATE      DeviceD2;
  WDF_TRI_STATE      WakeFromD0;
  WDF_TRI_STATE      WakeFromD1;
  WDF_TRI_STATE      WakeFromD2;
  WDF_TRI_STATE      WakeFromD3;
  DEVICE_POWER_STATE DeviceState[PowerSystemMaximum];
  DEVICE_POWER_STATE DeviceWake;
  SYSTEM_POWER_STATE SystemWake;
  ULONG              D1Latency;
  ULONG              D2Latency;
  ULONG              D3Latency;
  DEVICE_POWER_STATE IdealDxStateForSx;
} WDF_DEVICE_POWER_CAPABILITIES, *PWDF_DEVICE_POWER_CAPABILITIES;

メンバー

Size

この構造体のサイズ (バイト単位)。

DeviceD1

WdfTrue に設定されている場合、デバイスがデバイスのスリープ状態 D1 をサポートしていることを示す、WDF_TRI_STATE型指定の値。 WDF_TRI_STATE値の詳細については、次の「解説」セクションを参照してください。

DeviceD2

WdfTrue に設定されている場合、デバイスがデバイスのスリープ状態 D2 をサポートしていることを示す、WDF_TRI_STATE型指定された値。

WakeFromD0

WdfTrue に設定されている場合、デバイスが D0 状態の間にスリープ解除信号に応答できることを示す、WDF_TRI_STATE型指定の値。

WakeFromD1

WdfTrue に設定されている場合、デバイスが D1 状態の間にスリープ解除信号に応答できることを示す、WDF_TRI_STATE型指定の値。

WakeFromD2

WdfTrue に設定されている場合、デバイスが D2 状態の間にスリープ解除信号に応答できることを示す、WDF_TRI_STATE型指定の値。

WakeFromD3

WdfTrue に設定されている場合、デバイスが D3 状態の間にスリープ解除信号に応答できることを示す、WDF_TRI_STATE型指定の値。

DeviceState[PowerSystemMaximum]

各システム電源状態に対してデバイスがサポートする最も電力の多いデバイス状態を示す、DEVICE_POWER_STATE型指定された値の配列。 この配列では、SYSTEM_POWER_STATE列挙をインデックス値として使用します。 配列要素の値が PowerDeviceMaximum の場合、フレームワークはその要素に対してオペレーティング システムが格納した値を使用します。 DEVICE_POWER_STATEおよびSYSTEM_POWER_STATE列挙体は wdm.h で定義されます。 DeviceState メンバーの詳細については、「DeviceState」を参照してください。

DeviceWake

デバイスがスリープ解除信号をシステムに送信できる最も低いデバイス電源状態を示す、DEVICE_POWER_STATE型指定の値。 この値が PowerDeviceMaximum の場合、フレームワークでは、このメンバーのシステムに現在格納されているすべての値が使用されます。

SystemWake

デバイスがスリープ解除信号をシステムに送信できる最も低いシステム電源状態を示すSYSTEM_POWER_STATE型指定の値。 この値が PowerSystemMaximum の場合、フレームワークでは、このメンバーのシステムに現在格納されているすべての値が使用されます。 SYSTEM_POWER_STATE値は wdm.h で定義されます。

D1Latency

デバイスが D1 状態から D0 状態に戻るために必要なおおよその時間 (100 ナノ秒単位)。 この値が -1 の場合、フレームワークでは、このメンバーのシステムに現在格納されているすべての値が使用されます。

D2Latency

デバイスが D2 状態から D0 状態に戻るために必要なおおよその時間 (100 ナノ秒単位)。 この値が -1 の場合、フレームワークでは、このメンバーのシステムに現在格納されているすべての値が使用されます。

D3Latency

デバイスが D3 状態から D0 状態に戻るために必要なおおよその時間 (100 ナノ秒単位)。 この値が -1 の場合、フレームワークでは、このメンバーのシステムに現在格納されているすべての値が使用されます。

IdealDxStateForSx

システムがシステムスリープ状態に入り、デバイスがシステムの スリープ 解除を有効にしていない場合にデバイスがスリープ 状態 に入る必要があることを示すDEVICE_POWER_STATE型指定の値。 この値が 0 の場合、フレームワークでは PowerDeviceD3 が使用されます。 この値を PowerDeviceD0 にすることはできません。

ドライバーで、デバイスのスタックがデバイスの DeviceState 配列で指定したよりも高い電源デバイススリープ状態を表す IdealDxStateForSx 値を指定した場合、フレームワークは、配列内にある低電力状態を使用します。 たとえば、ドライバーが IdealDxStateForSx 値 D1 を指定し、デバイスの DeviceState 配列が D2 を指定した場合、フレームワークは D2 を使用します。

注釈

WDF_DEVICE_POWER_CAPABILITIES構造体は、 WdfDeviceSetPowerCapabilities への入力として使用されます。

複数のメンバーが WDF_TRI_STATE 型を使用します。 これらのメンバーには、次の規則が適用されます。

  • WdfTrue の値は、デバイスが機能をサポートし、WdfFalse の値がサポートされていないことを示します。
  • ファンクション ドライバーとフィルター ドライバーでは 、WdfTrue または WdfFalse、または WdfUseDefault の値を指定して、フレームワークがスタック内の下位ドライバーによって提供された値を使用する必要があることを示すことができます。 たとえば、バス ドライバーが DeviceD1WdfTrue を指定し、デバイスの関数ドライバーが WdfUseDefault を指定している場合、フレームワークは機能に WdfTrue を使用します。
  • バス ドライバーが子デバイスのデバイス オブジェクトを作成した後に WdfDeviceSetPowerCapabilities を呼び出す場合は、WdfTrue または WdfFalse を指定する必要があります。 バス ドライバーは、子デバイスの WdfUseDefault を指定できますが、この場合、WdfUseDefault は WdfFalse と同じです。
WDF_DEVICE_POWER_CAPABILITIES構造体を初期化するには、ドライバーが WDF_DEVICE_POWER_CAPABILITIES_INIT を呼び出す必要があります。

要件

要件
最小 KMDF バージョン 1.0
最小 UMDF バージョン 2.0
Header wdfdevice.h (Wdf.h を含む)

こちらもご覧ください

WDF_DEVICE_PNP_CAPABILITIES