共用方式為


SET_D3COLD_SUPPORT回呼函式 (wdm.h)

SetD3ColdSupport 回呼例程會啟用或停用轉換至 D3cold 裝置電源狀態。

語法

SET_D3COLD_SUPPORT SetD3coldSupport;

void SetD3coldSupport(
  [in, optional] PVOID Context,
  [in]           BOOLEAN D3ColdSupport
)
{...}

參數

[in, optional] Context

介面特定內容資訊的指標。 呼叫端會將此參數設定為 介面 D3COLD_SUPPORT_INTERFACE 結構之 Context 成員的值。

[in] D3ColdSupport

是否允許從 D3hot 轉換至 D3cold。 設定為 TRUE,以啟用這些轉換。 否則,請將 設定為 FALSE。 如需詳細資訊,請參閱。

傳回值

沒有

言論

裝置電源原則擁有者 (PPO) 的驅動程式可以呼叫此例程,以啟用或停用當計算機處於 S0 系統電源狀態且未準備結束 S0 時可能發生的 D3cold 子狀態的 D3cold 子狀態。

如果裝置必須能夠發出來自其所輸入之任何低功率 Dx 狀態的喚醒事件訊號,則此裝置的驅動程式不應該啟用轉換至 D3cold 子狀態,除非裝置可以發出來自這個子狀態的喚醒事件訊號。 否則,輸入 D3cold 之後,裝置將無法使用,直到電腦重新啟動或從睡眠狀態喚醒為止。

裝置的驅動程式可以呼叫 GetIdleWakeInfo 例程,以判斷裝置是否可以發出來自 D3cold 的喚醒事件訊號。

如有必要,裝置的驅動程式可以進行一系列 SetD3ColdSupport 呼叫來替代啟用和停用 D3cold 轉換,以響應動態變更的條件。

例如,圖形裝置在從 D3cold 轉換至 D0 之後,可能會有大型的硬體內容可還原。 視使用者目前正在執行的工作集而定,還原此內容所需的時間可能會或無法接受。 此外,還原時間可能會隨著此工作混合而有所不同。 當工作混合變更時,驅動程式可能需要動態啟用和停用轉換至 D3cold。

裝置只能從 D3hot 子狀態輸入 D3cold 子狀態。 如果驅動程式呼叫 SetD3ColdSupport 以啟用從 D3hot 轉換為 D3cold 的轉換,裝置可能會在輸入 D3hot 之後輸入 D3cold 或可能不會輸入 D3cold。 為了響應喚醒事件,裝置可能會直接從 D3hot 輸入 D0,而不需要通過 D3cold。

當裝置從 D3hot 移至 D3cold 時,它可能會這麼做,因為其與某些其他裝置共用的電源已關閉。 在這些裝置進入 D3cold 之後,其中一個裝置的驅動程式可能會要求轉換至 D0。 為了回應此要求,父總線驅動程式或ACPI篩選驅動程式會開啟電源,而共用電源的所有裝置都會進入其預設電源開啟狀態。

唯一預期此電源狀態變更的裝置驅動程式是要求變更的驅動程式。 其他裝置的驅動程式必須收到這項變更的通知,才能正確初始化其裝置以在 D0 中運作。 只有可以接收此通知的驅動程式才能讓其裝置輸入 D3cold。 否則,驅動程式將不知道裝置何時進入 D0。

從 Windows 8 開始,WDM 驅動程式可以使用電源架構註冊其裝置(PoFx),並在裝置進入 D0 時,DevicePowerRequiredCallback 例程收到通知。 同樣地,KMDF 驅動程式可以使用PoFx註冊其裝置,並由 EvtDeviceD0Entry 事件回呼通知。

未向 PoFx 註冊其裝置的驅動程式,如果裝置處於喚醒狀態,仍然可以收到轉換至 D0 的通知。 當總線驅動程式開啟裝置電源時,它們會完成驅動程式的 IRP_MN_WAIT_WAKE 要求。 回應中,驅動程式會初始化其裝置以在 D0 中運作。

在數個裝置共用的電源來源開啟之後,驅動程式要求轉換至 D0 的裝置可能是其中唯一一個有工作要做的裝置。 其他裝置可能會閑置,在此情況下,其驅動程式會在一段時間后將這些裝置移至 D3hot。

如果驅動程式呼叫 SetD3ColdSupport 來停用轉換至 D3cold,D0 是唯一裝置可從 D3hot 輸入的裝置電源狀態。

如果驅動程式呼叫 SetD3ColdSupport 以啟用轉換至 D3cold,這些轉換可能會因為其他原因而停用。 驅動程式可以呼叫 GetD3ColdCapability 例程,以判斷裝置是否能夠進入 D3cold 子ate。 不過,驅動程式可能不需要此資訊。 如果裝置無法輸入 D3cold,則呼叫 SetD3ColdSupport 沒有作用,但無害。

SetD3ColdSupport 例程只會影響電腦處於 (且未準備結束) S0 狀態時可能發生的 D3hot 到 D3cold 轉換。 此例程不會影響計算機準備結束 S0 並進入低功率系統狀態的情況。 在計算機進入系統低功率狀態之前,D3hot 子狀態中的裝置可能一律會進入 D3cold 子狀態。

根據預設,第一次呼叫 SetD3ColdSupport 例程之前,會停用 D3hot-to-D3cold 轉換。 若要變更此預設值,以便在第一個 SetD3ColdSupport 呼叫之前啟用 D3hot-to-D3cold 轉換,裝置的驅動程式套件可以在安裝驅動程式的 INF 檔案的 DDInstall.HW 區段中包含下列兩行:

Include = machine.inf
Needs = PciD3ColdSupported

Windows 8 是支援裝置的第一個 Windows 版本,可在電腦保持 S0 狀態時進入和結束 D3cold 子狀態。 如需詳細資訊,請參閱 裝置 Low-Power 狀態

要求

要求 價值
最低支援的用戶端 從 Windows 8 開始提供。
目標平臺 桌面
標頭 wdm.h (包括 Wdm.h)
IRQL PASSIVE_LEVEL

另請參閱

D3COLD_SUPPORT_INTERFACE

DevicePowerRequiredCallback

EvtDeviceD0Entry

GetD3ColdCapability

IRP_MN_WAIT_WAKE