次の方法で共有


WdfDeviceGetSystemPowerAction 関数 (wdfdevice.h)

[KMDF と UMDF に適用]

WdfDeviceGetSystemPowerAction メソッドは、コンピューターで現在発生している システム電源アクション(存在する場合) を返します。

構文

POWER_ACTION WdfDeviceGetSystemPowerAction(
  [in] WDFDEVICE Device
);

パラメーター

[in] Device

フレームワーク デバイス オブジェクトへのハンドル。

戻り値

WdfDeviceGetSystemPowerAction は、POWER_ACTION型指定列挙子の値を返します。 この値は、コンピューターで現在発生している システム電源アクション を示します。 詳細については、次の「解説」セクションを参照してください。 POWER_ACTION列挙は、wdm.h で定義

ドライバーが無効なオブジェクト ハンドルを提供すると、バグ チェックが発生します。

備考

WDF バージョン 1.31/2.31 ("v31" と呼ばれます) 以降、WdfDeviceGetSystemPowerAction が更新され、デバイスが電源ポリシー所有者である場合にシステムの電源アクションをより正確に報告します。 次の新しい動作を取得するには、ドライバーを v31 以降で再コンパイルする必要があります。

  • 関連のないシステム電源切り替えが進行中に、S0 アイドル (WdfDeviceAssignS0IdleSettings を参照) が原因でデバイスが D0 に入ったり終了したりした場合、WdfDeviceGetSystemPowerAction PowerActionSleep 返される可能性があります。 これは v31 で修正され、PowerActionNone 返されます。

  • システムがハイブリッド スリープ (休止状態ファイルを使用してスリープ) から復帰すると、v31 より前に、WdfDeviceGetSystemPowerAction 常に PowerActionHibernate 返されます。 これは v31 で修正され、次の値が返されます。

    • PowerActionSleep 電源が失われることなくスリープ状態になっていれば、システムは S3 に留まったことになります。
    • 電源喪失後にスリープ解除された場合 PowerActionHibernate が されます。つまり、システムは休止状態ファイルから再開されます

WdfDeviceGetSystemPowerAction メソッドを使用すると、デバイスがアイドル状態 (または目を覚ます) ためにデバイスの電源切り替えが発生しているか、またはコンピューター全体が低電力状態に入っている (または電源が切れている) かどうかをドライバーが判断できます。

ドライバーは、WdfDeviceGetSystemPowerAction を呼び出す必要があります、デバイスが低電力状態 に入る または動作状態 に戻場合にフレームワークが呼び出すイベント コールバック関数からのみ。

WdfDeviceGetSystemPowerAction 返される値は、次の状況によって異なります。

  • ドライバーが WdfDeviceGetSystemPowerAction 呼び出すときに、コンピューターが低電力状態に入っている場合、このメソッドは、コンピューターが低電力状態になった理由を返します。 たとえば、コンピューターが S1、S2、または S3 の低電力状態に入っている場合、このメソッドは PowerActionSleep 返します。
  • ドライバーが WdfDeviceGetSystemPowerAction 呼び出したときに、コンピューターが低電力状態から動作 (S0) 状態に戻っている場合、このメソッドは、コンピューターが低電力状態になった理由を返します。 たとえば、コンピューターが S1、S2、または S3 の低電力状態を離れている場合、このメソッドは PowerActionSleep 返します。
  • ドライバーが WdfDeviceGetSystemPowerAction 呼び出したときにコンピューターの電源がオンになっている場合、メソッドは PowerActionNone 返します。
  • ドライバーが WdfDeviceGetSystemPowerAction 呼び出したときに、デバイスが低電力アイドル状態になったり、動作 (D0) 状態に戻ったりしている場合、システムの残りの部分は動作 (S0) 状態のままで、PowerActionNone 返されます。
  • ドライバーが WdfDeviceGetSystemPowerAction を呼び出したときにコンピューターとデバイスの両方が動作状態にある場合、メソッドは PowerActionNone 返します。
低電力状態の詳細については、「デバイスが Low-Power 状態に入る」を参照してください。

次のコード例では、コンピューターで現在発生している電源切り替えアクティビティを取得します。

POWER_ACTION SysPowerAction;

SysPowerAction = WdfDeviceGetSystemPowerAction(device);

必要条件

要件 価値
ターゲット プラットフォーム 万国
最小 KMDF バージョン 1.9
UMDF の最小バージョン する 2.0
ヘッダー wdfdevice.h (Wdf.h を含む)
ライブラリ Wdf01000.sys (KMDF);WUDFx02000.dll (UMDF)
IRQL <= DISPATCH_LEVEL
DDI コンプライアンス規則 する DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)