共用方式為


啟用轉換至 D3cold

所有版本的 Windows 都能讓裝置在電腦進入睡眠狀態(如系統的低功耗狀態 S1 到 S4 之一)時保持在 D3cold 狀態。 在計算機結束 S0 之前,函式驅動程式、總線驅動程式和篩選驅動程式會一起運作,以將裝置移至 D3hot。 當計算機進入低功率 Sx 狀態時,此轉換有將裝置從 D3hot 移至 D3cold 的副作用。

從 Windows 8 開始,裝置可以在電腦仍維持在 S0 的狀態下進入和結束 D3cold。 裝置電源原則擁有者 (PPO) 的驅動程式可以啟用和停用這些轉換至 D3cold。 驅動程式不應讓其裝置進入 D3cold,除非裝置可以視需要從 D3cold 喚醒,然後在轉換至 D0 之後繼續正常作業。

當裝置進入 D3 時,它一開始會進入 D3 的 D3hot 子狀態。 從 D3hot,裝置可以輸入 D0 或 D3cold。 為了響應喚醒事件或 I/O 要求,裝置會從 D3hot 輸入 D0。 否則,裝置可能會保留在 D3hot 中,或可能從 D3hot 移至 D3cold。 如需這些轉換的詳細資訊,請參閱 裝置電源狀態中的裝置電源狀態圖表。

驅動程式不會起始裝置從 D3hot 轉換為 D3cold 的轉換。 相反地,當與此裝置共用通用電源的所有其他裝置都位於 D3hot 中,且已準備好輸入 D3cold 時,就會發生此轉換。 當這些裝置的最後一個進入 D3hot 時,基礎總線驅動程式和系統韌體會移除電源,並且裝置會同步進入 D3cold。

裝置的 PPO 驅動程式會告知作業系統是否要啟用裝置從 D3hot 轉換到 D3cold。 驅動程式可以在安裝裝置的 INF 檔案中提供這項資訊,或者驅動程式可以在運行時間呼叫 SetD3ColdSupport 例程,以動態啟用或停用裝置轉換至 D3cold。 如需詳細資訊,請參閱 使用 GUID_D3COLD_SUPPORT_INTERFACE 驅動程式介面

藉由讓裝置進入 D3cold,驅動程式會保證下列行為:

  • 當計算機保留在 S0 中時,裝置可以容許從 D3hot 轉換為 D3cold。
  • 當裝置從 D3cold 返回到 D0 時,它會正常運作。

如果裝置無法滿足其中任何一個需求,它在進入 D3cold 狀態後,可能會無法使用,直到電腦重新啟動或進入睡眠狀態為止。 如果裝置必須能夠從其進入的任何低功耗 Dx 狀態發出喚醒事件訊號,那麼除非驅動程式確定喚醒訊號在 D3cold 中有效,否則不得啟用進入 D3cold。

將裝置放在 D3cold 不一定表示已移除裝置的所有電源來源;它只表示允許透過總線與裝置通訊的電源來源已消失。 裝置可能仍然能夠獲取足夠的電源,向處理器發出喚醒事件的訊號。 例如,移除主要電源的乙太網路網路介面卡(NIC)可能會從乙太網路纜線提取電源。

由於 D3cold 是無法用來與裝置通訊的總線狀態,因此驅動程式無法將其裝置直接放入 D3cold 中。 相反地,驅動程式會先呼叫 PoRequestPowerIrp 例程來要求 D3 電源 IRP(目標狀態 = PowerDeviceD3IRP_MN_SET_POWER要求),以將裝置從 D0 移至 D3hot。 輸入 D3hot 之後,裝置可能會或可能不會從 D3hot 移至 D3cold。 只有在移除總線電源時,裝置才會進入 D3cold,如果父總線驅動程式關閉總線,或系統韌體關閉硬體平臺區段的電源,就會發生這種情況。