裝置電源狀態

裝置電源狀態原因電腦中裝置的電源狀態,與電腦中的其他裝置無關。 裝置電源狀態的名稱為 D0、D1、D2 和 D3。 D0 是完全開啟狀態,D1、D2 和 D3 是低電源狀態。 狀態號碼與耗電量相反:較高的編號狀態使用較少的電源。 從 Windows 8 開始,D3 狀態會分成兩個子狀態:D3hot 和 D3cold。

裝置電源狀態的特性如下:

  • 耗電量:裝置使用多少電力?

  • 裝置內容:裝置在此狀態中保留多少操作內容?

  • 設備磁碟機行為:裝置的驅動程式必須執行哪些動作,才能將裝置還原至完全運作狀態?

  • 還原時間:將裝置還原到完整運作狀態需要多久的時間? 大部分類型的裝置都有一些與下一個裝置類別不同的適中還原時間。 只有少數類型的裝置,例如 GPU,具有非常大型的硬體內容,需要更長的時間才能還原。

  • 喚醒功能:裝置是否可以從此狀態要求喚醒? 一般而言,如果裝置可以從指定的電源狀態要求喚醒 (例如 D2) ,它也可以要求從任何較高電源狀態 (D1) 的喚醒。

電源狀態的確切定義是裝置特定的。 並非所有裝置都會定義所有狀態;許多裝置只會定義 D0 和 D3 狀態。 請參閱裝置類別電源管理參考規格,以瞭解針對特定裝置定義哪些裝置電源狀態,以及每個狀態的操作需求為何。 (ACPI / Power Management 網站提供參考規格。)

裝置的電源狀態不需要符合 系統電源狀態。 例如,即使系統處於 系統運作狀態 (S0 ) ,某些裝置仍可能處於關閉 (D3) 狀態。

裝置的電源狀態似乎與裝置父匯流排的電源狀態無關。 例如,當 USB 裝置的父主機控制器處於 D3 狀態時,USB 裝置可能處於 D2 (選擇性暫停) 狀態。 這兩種狀態似乎不一致,因為 DX 狀態的定義在 USB 上和匯流排上不同 (通常是 PCI 或 PCI Express) USB 主機控制器所連線。

請注意,某些裝置能夠在單一裝置電源狀態內進行數種不同的低電量模式。 如果裝置的驅動程式可以自動將裝置從一個模式切換到另一個模式,而不需要變更裝置電源狀態,則這類裝置可以使用這些模式。 不過,一般規則是,如果模式之間沒有使用者可辨識的差異,裝置應該只使用最低電源模式。 如果低電量模式,例如低速模式、對效能造成負面影響,或對設備磁碟機以外的軟體而言不透明,硬體就不應該自動使用它。 如需詳細資訊,請參閱裝置類別電源管理參考規格。

驅動程式或電源管理員可以要求裝置電源狀態轉換,而且所有驅動程式都必須準備好處理要求這類轉換的 IRP。 如需詳細資訊,請參閱下列主題:

傳送裝置電源狀態的IRP_MN_QUERY_POWER或IRP_MN_SET_POWER

處理裝置電源狀態的IRP_MN_QUERY_POWER

處理裝置電源狀態的IRP_MN_SET_POWER

就像系統一樣,裝置可以從工作狀態 (D0) 轉換為任何低電量狀態, (D1、D2 或 D3) ,以及從任何低電源狀態轉換為工作狀態。 下圖是顯示有效裝置電源狀態轉換的狀態圖表。

說明有效裝置電源狀態轉換的圖表。

此圖表顯示 D3 的細分為 D3hot 和 D3cold。 D3hot 和 D3cold 從 Windows 8 開始定義。 所有裝置都必須支援 D0 狀態和 D3hot 子狀態。 圖表中顯示的其他狀態是選擇性的。

在上圖中,從 D3hot 轉換為 D3cold 是裝置低電源狀態之間的唯一直接轉換。 低電源狀態之間的所有其他轉換都需要中繼轉換至 D0,這可讓設備磁碟機視需要設定裝置硬體,以進入下一個低電源狀態或維持在 D0 中。 不過,裝置會結束 D3hot,並在關閉裝置電源時輸入 D3cold,這不需要設備磁碟機介入。 此驅動程式會在裝置進入 D3hot 之前,對裝置硬體進行任何必要的設定;不需要進行額外的設定,即可準備裝置,以便從 D3hot 轉換至 D3cold。 如需詳細資訊,請參閱 在驅動程式中支援 D3cold

PCI 根埠至端點 D 狀態對應

在Windows 10系統上,整體平臺電源狀態取決於晶片) 整合裝置上 SoC (系統的電源狀態 (D 狀態) ,包括 PCI 根埠。 視開發的平臺而定,PCI 根埠的 D 狀態需求可能會因每個平臺電源狀態而有所不同。 建議 OEM 參考 IHV 平臺特定檔,以瞭解平臺和裝置電源狀態需求。

下表列舉 PCI 根埠及其連結端點的電源狀態對應。 必須達到下列端點的 D 狀態,才能讓根埠進入目標 D 狀態。

根埠目標 D 狀態 端點 D 狀態

D0

D0、D0:F1

D0:F1

D3hot

D3hot

D3cold*

*PCI D3cold 電源狀態需要 BIOS 和設備磁碟機支援。 如果缺少支援,PCI 端點將只能達到 D3Hot。 如需詳細資訊,請參閱 在驅動程式中支援 D3Cold