PoFxNotifySurprisePowerOn 函式 (wdm.h)

PoFxNotifySurprisePowerOn 例程會通知電源管理架構 (PoFx) 裝置已開啟,作為提供電源給其他裝置的副作用。

語法

void PoFxNotifySurprisePowerOn(
  [in] PDEVICE_OBJECT Pdo
);

參數

[in] Pdo

實體裝置物件的指標 (PDO) 。 此參數指向 DEVICE_OBJECT 結構,表示開啟為副作用的實體裝置。 呼叫端一律是列舉 PDO 的總線驅動程式。

傳回值

備註

設備驅動器不應該呼叫此例程。 此例程只能由總線驅動程式呼叫。

總線驅動程式會呼叫此例程,通知PoFx目前未使用的裝置與第二部裝置同時開啟。 例如,第一個裝置可能會與第二個裝置共享電源軌。 因此,電源無法提供給第二個裝置,而不需要提供電源作為副作用給第一個裝置。 因為第一個裝置未使用,所以此裝置應該設定為盡可能耗用較少的電源。

若要要求轉換至 D0 電源狀態,設備驅動器會將其裝置堆疊向下傳送 IRP_MN_SET_POWER 要求。 透過此堆疊中的 PDO,此裝置父系的總線驅動程式會接收要求,並透過提供電源給裝置來回應。 不過,如果總線驅動程式無法在未開啟第二部未使用的裝置的情況下開啟此裝置,則總線驅動程式可以呼叫 PoFxNotifySurprisePowerOn ,以減少未使用的裝置所耗用的電源。

PoFxNotifySurprisePowerOn 的專案上, Pdo 參數所代表的裝置處於未初始化的 D0 電源狀態。 在此狀態下,裝置中的所有元件通常會開啟。 為了回應 PoFxNotifySurprisePowerOn呼叫,PoFx 會以初始化的 D0 狀態設定裝置。 在此設定期間,PoFx 會將許多元件切換為低電量 Fx 電源狀態。 可能的話,PoFx 會以「經常性存取 D3」狀態設定裝置,這實際上是 D0 狀態,裝置中的所有個別元件都會關閉。

PoFxNotifySurprisePowerOn 只能設定先前關閉裝置時向 PoFx 註冊的裝置。 不過,除非總線驅動程式知道裝置未註冊,否則當裝置開啟為副作用時,總線驅動程式應該呼叫 PoFxNotifySurprisePowerOn

如果總線驅動程式在裝置開啟時無法呼叫此例程,則裝置硬體可能會無限期地處於完全開啟狀態,在此期間,PoFx 假設裝置會保留在 D3 (完全關閉) 電源狀態。

只有在裝置意外開啟時,才呼叫 PoFxNotifySurprisePowerOn ,作為開啟其他裝置的副作用。 如果總線驅動程式將電源還原至裝置以回應 DevicePowerRequiredCallback 回呼或 D0 轉換 的IRP_MN_SET_POWER 要求,請呼叫 PoFxReportDevicePoweredOn 例程,改為在電源還原至裝置時通知 PoFx。

規格需求

需求
最低支援的用戶端 從 Windows 8 開始提供。
目標平台 Universal
標頭 wdm.h
程式庫 Ntoskrnl.lib
Dll Ntoskrnl.exe
IRQL <= DISPATCH_LEVEL

另請參閱

DEVICE_OBJECT

DevicePowerRequiredCallback

IRP_MN_SET_POWER

PoFxReportDevicePoweredOn