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 で修正され、次の値が返されます。
- 電源喪 失なしでスリープ状態になった場合、システムは S3 に残っていた
- 電源喪失後にスリープ解除された場合の PowerActionHibernate。つまり、システムが休止状態ファイルから再開された
WdfDeviceGetSystemPowerAction メソッドを使用すると、ドライバーは、デバイスがアイドル状態 (またはウェイクアップ) しているか、コンピューター全体が低電力状態に入っている (または離れている) ために、デバイスの電源切り替えが発生しているかどうかを判断できます。
ドライバーは 、WdfDeviceGetSystemPowerAction を呼び出す必要があるのは、デバイスが 低電力状態に入 ったとき、または 動作状態に戻るときにフレームワークが呼び出すイベント コールバック関数からのみです。
WdfDeviceGetSystemPowerAction が返す値は、次の状況によって異なります。
- ドライバーが WdfDeviceGetSystemPowerAction を呼び出すときにコンピューターが低電力状態に入っている場合、このメソッドは、コンピューターが低電力状態になった理由を返します。 たとえば、コンピューターが S1、S2、または S3 の低電力状態に入っている場合、このメソッドは PowerActionSleep を返します。
- ドライバーが WdfDeviceGetSystemPowerAction を呼び出したときに、コンピューターが低電力状態から動作 (S0) 状態に戻っている場合、このメソッドは、コンピューターが低電力状態になった理由を返します。 たとえば、コンピューターが S1、S2、または S3 の低電力状態を離れる場合、このメソッドは PowerActionSleep を返します。
- ドライバーが WdfDeviceGetSystemPowerAction を呼び出したときにコンピューターの電源がオンになっている場合、メソッドは PowerActionNone を返します。
- デバイスが低電力アイドル状態に入っているか、ドライバーが WdfDeviceGetSystemPowerAction を呼び出したときに動作中 (D0) 状態に戻り、システムの残りの部分が動作 (S0) 状態のままである場合、メソッドは PowerActionNone を返します。
- ドライバーが WdfDeviceGetSystemPowerAction を呼び出したときに、コンピューターとデバイスの両方が動作状態の場合、メソッドは PowerActionNone を返します。
例
次のコード例では、コンピューターで現在発生している電源切り替えアクティビティを取得します。
POWER_ACTION SysPowerAction;
SysPowerAction = WdfDeviceGetSystemPowerAction(device);
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
最小 KMDF バージョン | 1.9 |
最小 UMDF バージョン | 2.0 |
Header | wdfdevice.h (Wdf.h を含む) |
Library | Wdf01000.sys (KMDF);WUDFx02000.dll (UMDF) |
IRQL | <= DISPATCH_LEVEL |
DDI コンプライアンス規則 | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |