次の方法で共有


PO_FX_DEVICE_V3構造体 (wdm.h)

PO_FX_DEVICE_V3 構造では、デバイスの電源属性を電源管理フレームワーク (PoFx)、DFx (Directed PoFx) に記述します。

構文

typedef struct _PO_FX_DEVICE_V3 {
  ULONG                                      Version;
  ULONGLONG                                  Flags;
  PPO_FX_COMPONENT_ACTIVE_CONDITION_CALLBACK ComponentActiveConditionCallback;
  PPO_FX_COMPONENT_IDLE_CONDITION_CALLBACK   ComponentIdleConditionCallback;
  PPO_FX_COMPONENT_IDLE_STATE_CALLBACK       ComponentIdleStateCallback;
  PPO_FX_DEVICE_POWER_REQUIRED_CALLBACK      DevicePowerRequiredCallback;
  PPO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK  DevicePowerNotRequiredCallback;
  PPO_FX_POWER_CONTROL_CALLBACK              PowerControlCallback;
  PPO_FX_DIRECTED_POWER_UP_CALLBACK          DirectedPowerUpCallback;
  PPO_FX_DIRECTED_POWER_DOWN_CALLBACK        DirectedPowerDownCallback;
  ULONG                                      DirectedFxTimeoutInSeconds;
  PVOID                                      DeviceContext;
  ULONG                                      ComponentCount;
  PO_FX_COMPONENT_V2                         Components[ANYSIZE_ARRAY];
} PO_FX_DEVICE_V3, *PPO_FX_DEVICE_V3;

メンバーズ

Version

この構造体のバージョン番号。 ドライバーが DFx でダイレクト パワー サポートに登録する場合は、このメンバーを PO_FX_VERSION_V3に設定します。

Flags

ダイレクト 子デバイスと電源子デバイスが Directed PoFx をオプトアウトできるかどうかを制御します。

使用可能なフラグ値は次のとおりです。

形容
PO_FX_DEVICE_FLAG_DIRECT_CHILDREN_OPTIONAL このデバイスのダイレクト 子デバイスが、必要に応じて Directed PoFx をサポートできるようにします。 設定されていない場合、すべての直接の子は、Directed PoFx を完全にサポートするには、このデバイスの Directed PoFx をサポートする必要があります。
PO_FX_DEVICE_FLAG_POWER_CHILDREN_OPTIONAL このデバイスの電源子デバイスが必要に応じて Directed PoFx をサポートできるようにします。 指定しない場合、すべての電源の子は、このデバイスの Directed PoFx を完全にサポートする Directed PoFx をサポートする必要があります。
PO_FX_DEVICE_FLAG_DFX_CHILDREN_OPTIONAL PO_FX_DEVICE_FLAG_DIRECT_CHILDREN_OPTIONALPO_FX_DEVICE_FLAG_POWER_CHILDREN_OPTIONAL の両方を設定します
PO_FX_DEVICE_FLAG_DISABLE_FAST_RESUME D0-IRP が休止状態やスリープなどのシステム状態から再開する前に、PoFx に S0-IRP が完了しないように強制します。 PO_FX_DEVICE_FLAG_ENABLE_FAST_RESUMEと相互に排他的です。
PO_FX_DEVICE_FLAG_ENABLE_FAST_RESUME D0-IRP が休止状態やスリープなどのシステム状態から再開する前に、PoFx に S0-IRP を完了させます。 PO_FX_DEVICE_FLAG_ENABLE_FAST_RESUMEと相互に排他的です。

ComponentActiveConditionCallback

ComponentActiveConditionCallback デバイス ドライバーによって実装されるコールバック ルーチンへのポインター。

ComponentIdleConditionCallback

ComponentIdleConditionCallback デバイス ドライバーによって実装されるコールバック ルーチンへのポインター。

ComponentIdleStateCallback

ComponentIdleStateCallback デバイス ドライバーによって実装されるコールバック ルーチンへのポインター。

DevicePowerRequiredCallback

DevicePowerRequiredCallback デバイス ドライバーによって実装されるコールバック ルーチンへのポインター。

DevicePowerNotRequiredCallback

DevicePowerNotRequiredCallback デバイス ドライバーによって実装されるコールバック ルーチンへのポインター。

PowerControlCallback

デバイス ドライバーによって実装される PowerControlCallback コールバック ルーチンへのポインター。

DirectedPowerUpCallback

デバイス ドライバーによって実装される PO_FX_DIRECTED_POWER_UP_CALLBACK コールバック ルーチンへのポインター。 デバイスは、PoFx に登録するときに、DirectedPower* コールバックのみを提供できます。 残りの PoFx コールバックを実装する必要はありません。

DirectedPowerDownCallback

デバイス ドライバーによって実装される PO_FX_DIRECTED_POWER_DOWN_CALLBACK コールバック ルーチンへのポインター。

DirectedFxTimeoutInSeconds

ソフトウェア アクティビティが存在しなくなった後にデバイスがアイドル状態になった推奨タイムアウトを秒単位で指定するヒントをフレームワークに提供します。 既定値は 2 分です。

DeviceContext

呼び出し元によって割り当てられたデバイス コンテキストへのポインター。 このポインターは、この構造体が指す各ドライバー実装コールバック関数にパラメーターとして渡されます。 デバイス ドライバーは、このコンテキストを使用して、デバイスの現在の電源状態に関する情報を格納します。 このコンテキストは PoFx に対して不透明です。

ComponentCount

Components 配列内の要素の数。 さらに、このメンバーは、デバイス内のコンポーネントの数を指定します。

Components[ANYSIZE_ARRAY]

このメンバーは、1 つ以上のPO_FX_COMPONENT_V2要素の配列の最初の要素です。 配列に複数の要素が含まれている場合、追加の要素は PO_FX_DEVICE_V2 構造体のすぐ後に続きます。 配列には、デバイス内のコンポーネントごとに 1 つの要素が含まれています。 各コンポーネントの Fx 電源状態は、デバイス内の他のコンポーネントの Fx 電源状態とは無関係に制御できます。 ANYSIZE_ARRAY 定数は、Ntdef.h ヘッダー ファイルで 1 に定義されています。

備考

デバイスを PoFx に登録するには、ドライバーは、PoFxRegisterDevice ルーチンを呼び出し、パラメーターとして、デバイスを記述する PO_FX_DEVICE 構造体へのポインターを提供します。 DFx ではなく PoFx を使用するには、PO_FX_DEVICE_V2 構造体 または PO_FX_DEVICE_V3 構造体を使用して PoFx に登録します。

Components 配列内の各要素は、デバイス内の 1 つのコンポーネントの電源状態属性を記述します。 デバイス内の各コンポーネントは、Components 配列インデックスによって識別されます。 PoFxActivateComponent や PoFxCompleteIdleCondition などのルーチンでは、コンポーネントの配列インデックスを使用してコンポーネントを識別

デバイス ドライバーは、8 つのコールバック ルーチンをすべて実装する必要はありません。 ドライバーが対応するコールバック ルーチンを実装していない場合、ドライバーは、PO_FX_DEVICE 構造体の関数ポインターを NULL に設定できます。 ただし、特定のコールバック ルーチンを実装する必要があります。 具体的には、デバイス内の 1 つ以上のコンポーネントに複数の Fx 状態がある場合、ドライバーは ComponentIdleStateCallback ComponentActiveConditionCallback、および ComponentIdleConditionCallback ルーチン 実装する必要があります。 それ以外の場合、デバイスの登録が失敗し、PoFxRegisterDevice STATUS_INVALID_PARAMETERが返されます。

ドライバーが PO_FX_DEVICE_FLAG_DISABLE_FAST_RESUME または PO_FX_DEVICE_FLAG_ENABLE_FAST_RESUME のいずれかを提供しない場合、システムはプラットフォームの既定の構成にフォールバックします。 既定の構成は、x86/x64 プラットフォームでは PO_FX_DEVICE_FLAG_ENABLE_FAST_RESUME、ARM32/ARM64 プラットフォームの場合は PO_FX_DEVICE_FLAG_DISABLE_FAST_RESUME です。 これらのフラグは Win11 22000 以降でのみ受け入れられ、以前のリリースでは暗黙的に無視されます。 WDF ドライバーの場合、これらのフラグは、WDF_POWER_FRAMEWORK_SETTINGSPoFxDeviceFlags フィールドを使用して指定できます。

必要条件

要件 価値
サポートされる最小クライアント Windows 10 バージョン 1903
ヘッダー wdm.h

関連項目

/windows-hardware/drivers/kernel/introduction-to-the-directed-power-management-framework

ComponentActiveConditionCallback

ComponentIdleConditionCallback

ComponentIdleStateCallback

DevicePowerNotRequiredCallback

DevicePowerRequiredCallback

PO_FX_COMPONENT

PoFxActivateComponent

PoFxCompleteIdleCondition

PoFxRegisterDevice

PowerControlCallback