共用方式為


系統睡眠準則

只要系統判斷有使用者或應用程式活動,它就不會進入睡眠狀態。 系統可以偵測特定活動,例如使用者輸入或網路通訊。 不過,系統無法偵測到其他活動。 例如,簡報應用程式需要顯示畫面。 不過,應用程式在簡報期間可能會處於閒置狀態,導致系統關閉顯示器。

若要通知系統您的應用程式忙碌中,請使用 SetThreadExecutionState 函式。 此函式可防止系統在應用程式執行時進入睡眠或關閉顯示器。

簡報和多媒體應用程式必須使用ES_DISPLAY_REQUIRED呼叫SetThreadExecutionState函式,讓系統知道它不應該讓顯示裝置進入睡眠狀態。 事件處理應用程式,例如管理傳入傳真的工具,必須呼叫 SetThreadExecutionState 搭配 ES_SYSTEM_REQUIRED、處理事件,然後清除旗標,讓系統可以返回睡眠狀態。 請注意,大部分的生產力應用程式不需要使用 SetThreadExecutionState ,因為系統通常可以依使用者輸入來判斷活動。

為了維護自上次使用者輸入以來的時間,系統會使用顯示閒置計時器和系統閒置計時器。 系統會比較閒置計時器與電源計劃中所設定的值。 如果顯示閒置計時器值大於顯示逾時值,而且沒有線程透過呼叫 SetThreadExecutionState 搭配 ES_DISPLAY_REQUIRED來要求顯示,系統就會關閉顯示器。 同樣地,如果系統閒置計時器大於系統逾時值,而且沒有應用程式透過呼叫 SetThreadExecutionStateES_SYSTEM_REQUIRED來要求系統,系統就會進入睡眠狀態。

系統會維護名為 SetThreadExecutionState的應用程式計數。 系統會追蹤每個呼叫 SetThreadExecutionState 的執行緒,並據以調整計數器。 如果此計數器達到零,而且沒有任何使用者輸入,系統就會進入睡眠狀態。

如果電源不足,應用程式可以要求使用者介入,或要求系統自行暫停。 您可以使用 SetSuspendState 函式暫停系統作業。

如果系統自動喚醒 (PBT_APMRESUMEAUTOMATIC) ,則沒有任何計時器相關。 如需詳細資訊,請參閱 系統喚醒事件

輸入睡眠

當系統進入睡眠狀態時,系統會自動保留整個系統和所有應用程式的狀態。 因此,大部分的應用程式不需要採取任何特殊動作。 在系統轉換之前,需要執行特定動作的應用程式可以註冊電源事件。

當系統傳送 PBT_APMSUSPEND 事件時,每個應用程式在系統開始轉換至睡眠之前,都會有兩秒執行任何必要的動作。 應用程式必須限制他們為了回應此事件所採取的動作,以確保它們在配置的時間內完成所有作業。

關於電源管理

系統喚醒事件