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 Idle 而進入或結束 D0 (請參閱 WdfDeviceAssignS0IdleSettings),而未相關的系統電源轉換正在進行中,WdfDeviceGetSystemPowerAction 可能會傳回 PowerActionSleep。 這在 v31 中已修正,現在它會傳回 PowerActionNone。
當系統從混合式睡眠喚醒 (睡眠與休眠檔案),在 v31 之前,WdfDeviceGetSystemPowerAction 一律會傳回 PowerActionHibernate。 這是在 v31 中修正的,現在它會傳回:
- PowerActionSleep,如果喚醒時沒有電源遺失,這表示系統仍保留在 S3 中
- 如果 PowerActionHibernate 在電源遺失後喚醒,PowerActionHibernate,這表示系統從休眠檔案繼續
WdfDeviceGetSystemPowerAction 方法可讓驅動程式判斷裝置的電源轉換是否因為裝置閑置(或喚醒),或因為整部計算機進入(或離開)低功率狀態而發生。
驅動程式必須呼叫 WdfDeviceGetSystemPowerAction , 架構在裝置 進入低功率狀態 時呼叫的事件回呼函式,或 傳回其工作狀態。
WdfDeviceGetSystemPowerAction 傳回的值取決於下列情況:
- 如果當驅動程式呼叫 WdfDeviceGetSystemPowerAction時,計算機進入低電源狀態時,此方法會傳回電腦進入低電源狀態的原因。 例如,如果計算機輸入 S1、S2 或 S3 低功率狀態,此方法會傳回 PowerActionSleep。
- 如果當驅動程式呼叫 WdfDeviceGetSystemPowerAction時,計算機從低功率狀態返回其工作狀態 (S0) 狀態,此方法會傳回計算機進入低電源狀態的原因。 例如,如果電腦離開其 S1、S2 或 S3 低功率狀態,此方法會傳回 PowerActionSleep。
- 如果驅動程式呼叫 WdfDeviceGetSystemPowerAction時啟動電腦(關閉之後),此方法會傳回 PowerActionNone。
- 如果當驅動程式呼叫 WdfDeviceGetSystemPowerAction時,裝置進入低功率閑置狀態或返回其工作 (D0) 狀態,則此方法會傳回 PowerActionNone。
- 如果當驅動程式呼叫 WdfDeviceGetSystemPowerAction時,計算機和裝置都處於其工作狀態,此方法會傳回 PowerActionNone。
例子
下列程式代碼範例會取得計算機目前發生的電源轉換活動。
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) |