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 子狀態。

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

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

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

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

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

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

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

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

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

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

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

如果驅動程式呼叫 SetD3ColdSupport 來啟用轉換至 D3cold,這些轉換可能會因為其他原因而停用。 驅動程式可以呼叫 GetD3ColdCapability 例程來判斷裝置是否能夠輸入 D3cold 子專案。 不過,驅動程式可能不需要此資訊。 如果裝置無法輸入 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 是支援可在計算機維持 S0 狀態時進入和結束 D3cold 子狀態之裝置的第一個 Windows 版本。 如需詳細資訊,請參閱 裝置 Low-Power 狀態

規格需求

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

另請參閱

D3COLD_SUPPORT_INTERFACE

DevicePowerRequiredCallback

EvtDeviceD0Entry

GetD3ColdCapability

IRP_MN_WAIT_WAKE