裝置電源管理 (DPM) 通知

每個裝置電源管理 (DPM) 通知,PEP 的 AcceptDeviceNotification 回呼例程接收會伴隨指出通知類型的 Notification 參數,以及指向包含指定通知類型資訊之數據結構的 Data 參數。

在此呼叫中,Notification 參數會設定為指出通知類型的PEP_DPM_XXX常數值。 Data 參數指向與此通知類型相關聯的PEP_XXX結構類型。

通知標識碼 相關聯的結構
PEP_DPM_PREPARE_DEVICE 0x01 PEP_PREPARE_DEVICE
PEP_DPM_ABANDON_DEVICE 0x02 PEP_ABANDON_DEVICE
PEP_DPM_REGISTER_DEVICE 0x03 PEP_REGISTER_DEVICE_V2
PEP_DPM_UNREGISTER_DEVICE 0x04 PEP_UNREGISTER_DEVICE
PEP_DPM_DEVICE_POWER_STATE 0x05 PEP_DEVICE_POWER_STATE
PEP_DPM_COMPONENT_ACTIVE 0x07 PEP_COMPONENT_ACTIVE
PEP_DPM_WORK 0x0D PEP_WORK
PEP_DPM_POWER_CONTROL_REQUEST 0x0E PEP_POWER_CONTROL_REQUEST
PEP_DPM_POWER_CONTROL_COMPLETE 0x0F PEP_POWER_CONTROL_COMPLETE
PEP_DPM_SYSTEM_LATENCY_UPDATE 0x10 PEP_SYSTEM_LATENCY
PEP_DPM_DEVICE_STARTED 0x12 PEP_DEVICE_STARTED
PEP_DPM_NOTIFY_COMPONENT_IDLE_STATE 0x13 PEP_NOTIFY_COMPONENT_IDLE_STATE
PEP_DPM_REGISTER_DEBUGGER 0x15 PEP_REGISTER_DEBUGGER
PEP_DPM_LOW_POWER_EPOCH 0x18 PEP_LOW_POWER_EPOCH
PEP_DPM_REGISTER_CRASHDUMP_DEVICE 0x19 PEP_REGISTER_CRASHDUMP_DEVICE
PEP_DPM_DEVICE_IDLE_CONSTRAINTS 0x1A PEP_DEVICE_PLATFORM_CONSTRAINTS
PEP_DPM_COMPONENT_IDLE_CONSTRAINTS 0x1B PEP_COMPONENT_PLATFORM_CONSTRAINTS
PEP_DPM_QUERY_COMPONENT_PERF_CAPABILITIES 0x1C PEP_QUERY_COMPONENT_PERF_CAPABILITIES
PEP_DPM_QUERY_COMPONENT_PERF_SET 0x1D PEP_QUERY_COMPONENT_PERF_SET
PEP_DPM_QUERY_COMPONENT_PERF_SET_NAME 0x1E PEP_QUERY_COMPONENT_PERF_SET_NAME
PEP_DPM_QUERY_COMPONENT_PERF_STATES 0x1F PEP_QUERY_COMPONENT_PERF_STATES
PEP_DPM_REGISTER_COMPONENT_PERF_STATES 0x20 PEP_REGISTER_COMPONENT_PERF_STATES
PEP_DPM_REQUEST_COMPONENT_PERF_STATE 0x21 PEP_REQUEST_COMPONENT_PERF_STATE
PEP_DPM_QUERY_CURRENT_COMPONENT_PERF_STATE 0x22 PEP_QUERY_CURRENT_COMPONENT_PERF_STATE
PEP_DPM_QUERY_DEBUGGER_TRANSITION_REQUIREMENTS 0x23 PEP_DEBUGGER_TRANSITION_REQUIREMENTS
PEP_DPM_QUERY_SOC_SUBSYSTEM_COUNT 0x24 PEP_QUERY_SOC_SUBSYSTEM_COUNT
PEP_DPM_QUERY_SOC_SUBSYSTEM 0x25 PEP_QUERY_SOC_SUBSYSTEM
PEP_DPM_RESET_SOC_SUBSYSTEM_ACCOUNTING 0x26 PEP_RESET_SOC_SUBSYSTEM_ACCOUNTING
PEP_DPM_QUERY_SOC_SUBSYSTEM_BLOCKING_TIME 0x27 PEP_QUERY_SOC_SUBSYSTEM_BLOCKING_TIME
PEP_DPM_QUERY_SOC_SUBSYSTEM_METADATA 0x28 PEP_QUERY_SOC_SUBSYSTEM_METADATA

通知標識碼

AcceptDeviceNotification 回呼例程會使用下列 DPM 通知標識符。

PEP_DPM_PREPARE_DEVICE

通知 (PEP_DPM_PREPARE_DEVICE)

值PEP_DPM_PREPARE_DEVICE。

數據 (PEP_DPM_PREPARE_DEVICE)

PEP_PREPARE_DEVICE 結構的指標。 告知 PEP 擁有指定的裝置,以設定裝置以在 D0 (運作) 裝置電源狀態運作。

Windows 電源管理架構 (PoFx) 會在作業系統第一次啟動裝置的驅動程式堆疊之前,將此通知傳送至 PEP。 此通知可讓 PEP 開啟操作裝置所需的任何外部電源或時鐘資源。

若要傳送PEP_DPM_PREPARE_DEVICE通知,操作系統會呼叫 PEP 的 AcceptDeviceNotification 回呼例程。 在此呼叫中,Notification 參數值是PEP_DPM_PREPARE_DEVICE,而 Data 參數會指向PEP_PREPARE_DEVICE結構。 在專案上,此結構的 DeviceId 成員是可唯一識別裝置的裝置識別字串。 在傳回之前,PEP 會將此結構的 DeviceAccepted 成員設定為 TRUE,以宣告裝置的擁有權,或設定為 FALSE,表示它沒有裝置。

擁有裝置電源管理的 PEP 負責管理裝置外部且需要操作裝置的電源和時鐘資源。 此 PEP 可讓時鐘訊號和電源給裝置以回應PEP_DPM_PREPARE_DEVICE通知,並移除裝置的時鐘訊號和電源,以回應PEP_DPM_ABANDON_DEVICE通知。

下表顯示此操作系統傳送PEP_DPM_PREPARE_DEVICE通知給 PEP 時生效的先決條件,以及 PEP 處理其擁有之裝置此通知之後必須生效的後置條件。

先決條件 Postconditions
裝置可以處於任何電源狀態。 如果 PEP 宣告裝置的擁有權,裝置及其所有元件都必須開啟,且裝置的時鐘必須關閉。
當電源管理員嘗試尋找這些裝置的 PEP 擁有者時,PEP 可以接收多個裝置的PEP_DPM_PREPARE_DEVICE通知。 PEP 應針對 PEP 未擁有的所有裝置,將PEP_PREPARE_DEVICE結構的 DeviceAccepted 成員設定為 FALSE。

核心裝置不會傳送PEP_DPM_PREPARE_DEVICE通知。

對於PEP_DPM_PREPARE_DEVICE通知,AcceptDeviceNotification 例程一律會在 IRQL = PASSIVE_LEVEL呼叫。

PEP_DPM_ABANDON_DEVICE

通知 (PEP_DPM_ABANDON_DEVICE)

值PEP_DPM_ABANDON_DEVICE。

數據 (PEP_DPM_ABANDON_DEVICE)

PEP_ABANDON_DEVICE 結構的指標。 告知 PEP,指定的裝置不再供作業系統使用。

Windows 電源管理架構 (PoFx) 操作系統移除裝置的驅動程式堆疊之後,將此通知傳送至 PEP。 此通知可讓 PEP 關閉用來操作裝置的任何外部電源或時鐘資源,以及從未來的決策流程中移除此裝置。 如果稍後必須再次啟動裝置,PEP 會先收到PEP_DPM_PREPARE_DEVICE通知。

若要傳送PEP_DPM_ABANDON_DEVICE通知,操作系統會呼叫 PEP 的 AcceptDeviceNotification 回呼例程。 在此呼叫中,Notification 參數值是PEP_DPM_ABANDON_DEVICE,而 Data 參數會指向PEP_ABANDON_DEVICE結構。 在專案上,此結構的 DeviceId 成員是可唯一識別裝置的裝置識別字串。 在傳回之前,PEP 會將此結構的 DeviceAccepted 成員設定為 TRUE,以宣告裝置的擁有權,或設定為 FALSE,表示它沒有裝置。

擁有裝置電源管理的 PEP 負責管理裝置外部且需要操作裝置的電源和時鐘資源。

下表顯示此操作系統傳送PEP_DPM_ABANDON_DEVICE通知給 PEP 時生效的先決條件,以及 PEP 處理其擁有之裝置此通知之後必須生效的後置條件。

先決條件 Postconditions
PEP 已收到裝置的PEP_DPM_PREPARE_DEVICE通知,並接受裝置的擁有權。
如果 PEP 收到裝置的PEP_DPM_REGISTER_DEVICE通知,並接受裝置註冊,則後續會收到裝置的PEP_DPM_UNREGISTER_DEVICE通知。
任何配置以回應PEP_DPM_PREPARE_DEVICE通知的資源都必須釋放。
對於PEP_DPM_PREPARE_DEVICE通知,AcceptDeviceNotification 例程一律會在 IRQL = PASSIVE_LEVEL呼叫。

PEP_DPM_REGISTER_DEVICE

通知 (PEP_DPM_REGISTER_DEVICE)

值PEP_DPM_REGISTER_DEVICE。

數據 (PEP_DPM_REGISTER_DEVICE)

PEP_REGISTER_DEVICE_V2 結構的指標。

告知 PEP 指定裝置的驅動程式堆疊已向 Windows 電源管理架構註冊, (PoFx) 。

當裝置的驅動程式堆棧呼叫PoFxRegisterDevice例程來註冊裝置時,PoFx 會傳送此通知。 此通知可讓 PEP 將裝置的註冊資訊複製到 PEP 的內部記憶體,以供稍後參考。

若要傳送PEP_DPM_REGISTER_DEVICE通知,操作系統會呼叫 PEP 的 AcceptDeviceNotification 回呼例程。 在此呼叫中,Notification 參數值會PEP_DPM_REGISTER_DEVICE,而 Data 參數會指向包含裝置核心句柄和其他註冊資訊的PEP_REGISTER_DEVICE_V2結構。 在專案上,此結構的 DeviceId 成員是可唯一識別裝置的裝置識別字串。 在傳回之前,PEP 會將此結構的 DeviceAccepted 成員設定為 TRUE,以宣告裝置的擁有權,或設定為 FALSE,表示它沒有裝置。 如需這個結構其他成員的相關信息,請參閱PEP_REGISTER_DEVICE_V2。

下表顯示此操作系統傳送PEP_DPM_REGISTER_DEVICE通知給 PEP 時生效的先決條件,以及 PEP 處理其擁有裝置此通知之後必須生效的後置條件。

先決條件 Postconditions
PEP 已收到其擁有裝置的PEP_DPM_PREPARE_DEVICE通知。 PEP 已準備好接收與此裝置相關聯的其他裝置電源管理 (DPM) 通知。

對於PEP_DPM_REGISTER_DEVICE通知,AcceptDeviceNotification 例程一律會在 IRQL = PASSIVE_LEVEL呼叫。

PEP_DPM_UNREGISTER_DEVICE

通知 (PEP_DPM_UNREGISTER_DEVICE)

值PEP_DPM_UNREGISTER_DEVICE。

數據 (PEP_DPM_UNREGISTER_DEVICE)

PEP_UNREGISTER_DEVICE 結構的指標。

告知 PEP 擁有指定的裝置,裝置的驅動程式堆疊已從 Windows 電源管理架構撤銷其註冊, (PoFx) 。

PoFx 會傳送此通知來通知 PEP,指出在先前的PEP_DPM_REGISTER_DEVICE通知期間,為裝置儲存的任何註冊資訊都不再有效。 為了回應,PEP 可以清除用於此裝置電源管理的任何內部狀態。

若要傳送PEP_DPM_UNREGISTER_DEVICE通知,操作系統會呼叫 PEP 的 AcceptDeviceNotification 回呼例程。 在此呼叫中,Notification 參數值會PEP_DPM_UNREGISTER_DEVICE,而 Data 參數會指向PEP_UNREGISTER_DEVICE結構。 這個結構包含 PEP 為回應裝置先前PEP_DPM_REGISTER_DEVICE通知所建立的句柄。

下表顯示當此作業系統將PEP_DPM_UNREGISTER_DEVICE通知傳送給 PEP 時生效的先決條件,以及 PEP 處理它擁有之裝置此通知之後必須生效的後置條件。

先決條件 Postconditions
如果 PEP 收到裝置和已接受裝置註冊的PEP_DPM_REGISTER_DEVICE通知。
PEP 可以接收任何裝置電源管理 (DPM) 與此裝置相關聯的通知。
PEP 可以報告與此裝置相關聯的「工作」。
除了PEP_DPM_ABANDON_DEVICE以外,PEP 無法再收到任何裝置電源管理 (DPM) 通知。
PEP 無法報告與此裝置相關聯的「工作」。

對於PEP_DPM_UNREGISTER_DEVICE通知,AcceptDeviceNotification 例程一律會在 IRQL = PASSIVE_LEVEL呼叫。

PEP_DPM_DEVICE_POWER_STATE

通知 (PEP_DPM_DEVICE_POWER_STATE)

值PEP_DPM_DEVICE_POWER_STATE。

數據 (PEP_DPM_DEVICE_POWER_STATE)

PEP_DEVICE_POWER_STATE 結構的指標。

每次裝置的驅動程式堆疊要求變更為新的 Dx 電源狀態,或先前要求的轉換至 Dx 電源狀態完成時,傳送至 PEP。

在 PEP 呼叫 RequestWorker 例程以要求工作項目之後,PoFx 會藉由傳送 PEP PEP_DPM_DEVICE_POWER_STATE 通知來回應。 不過,在資源 (之前,不會傳送此通知,也就是處理工作專案所需的背景工作線程) 。 如此一來,PoFx 可確保 PEP 在通知期間傳遞至 PoFx 的工作要求永遠不會因為資源不足而失敗。

若要傳送PEP_DPM_DEVICE_POWER_STATE通知,操作系統會呼叫 PEP 的 AcceptDeviceNotification 回呼例程。 在此呼叫中,Notification 參數值會PEP_DPM_DEVICE_POWER_STATE,而 Data 參數會指向PEP_DEVICE_POWER_STATE結構。 在輸入時,PEP 應該假設此結構的內容未初始化。 若要處理此通知,PEP 應該將 WorkInformation 成員設定為指向 PEP 配置的PEP_WORK_INFORMATION結構,以描述所要求的工作。 此外,PEP 應該將 PEP_WORK 結構的 NeedWork 成員設定為 TRUE,以確認 PEP 已處理PEP_DEVICE_POWER_STATE通知,且 WorkInformation 成員指向有效的PEP_WORK_INFORMATION結構。 如果 PEP 無法處理通知或無法配置PEP_WORK_INFORMATION結構,PEP 應該將 WorkInformation 成員設定為 NULL,並將 NeedWork 成員設定為 FALSE。

對於PEP_DPM_DEVICE_POWER_STATE通知,AcceptDeviceNotification 例程一律會在 IRQL = PASSIVE_LEVEL呼叫。

PEP_DPM_COMPONENT_ACTIVE

通知 (PEP_DPM_COMPONENT_ACTIVE)

值PEP_DPM_COMPONENT_ACTIVE。

數據 (PEP_DPM_COMPONENT_ACTIVE)

識別元件的 PEP_COMPONENT_ACTIVE 結構的指標,指出此元件是否轉換至使用中條件或閑置條件。

通知 PEP,元件需要從閑置條件轉換為使用中條件,反之亦然。

Windows 電源管理架構 (PoFx) 在轉換擱置到使用中條件或閑置條件時傳送此通知。

若要傳送PEP_DPM_COMPONENT_ACTIVE通知,PoFx 會呼叫 PEP 的 AcceptDeviceNotification 回呼例程。 在此呼叫中,Notification 參數值會PEP_DPM_COMPONENT_ACTIVE,而 Data 參數會指向PEP_COMPONENT_ACTIVE結構。

可存取的元件位於使用中條件中。 無法存取的元件處於閑置狀態。 處於使用中條件的元件一律處於 F0 元件電源狀態。 元件在進入閑置條件之前,無法離開 F0。 處於閑置條件的元件可能處於 F0 或低電量 Fx 狀態。 元件的作用中/閑置條件是唯一可靠的方法,可讓驅動程序判斷元件是否可存取。 F0 但處於閑置狀況的元件可能即將切換到低電源 Fx 狀態。

當作用中元件準備好進入閑置條件時,就會立即進行轉換。 在處理PEP_DPM_COMPONENT_ACTIVE通知期間,PEP 可能會要求從 F0 轉換為元件的低電源 Fx 狀態。

如果當PEP_DPM_COMPONENT_ACTIVE通知要求從閑置條件轉換至使用中條件時,元件處於低電源 Fx 狀態,PEP 必須先將元件切換至 F0,元件才能進入使用中條件。 從PEP_DPM_COMPONENT_ACTIVE通知的 AcceptDeviceNotification 回呼傳回之後,PEP 可能需要以異步方式準備元件以異步方式轉換至作用中條件。 當元件完全設定為在作用中條件中運作之後,PEP 必須呼叫 RequestWorker 例程,然後在PEP_WORK_INFORMATION結構中設定 WorkType = PepWorkActiveComplete 來處理產生的PEP_DPM_WORK通知。

如果 PEP 收到 F0 中元件PEP_DPM_COMPONENT_ACTIVE通知,且已完全設定為在作用中狀況中運作,PEP 可能可以同步完成處理此通知。 如果支援通知的「快速路徑」處理,則此通知之PEP_COMPONENT_ACTIVE結構的 WorkInformation 成員包含PEP_WORK_INFORMATION結構的指標,而 PEP 可以將此結構的 WorkType 成員設定為 PepWorkActiveComplete 來完成轉換。 不過,如果 WorkInformation = NULL,則沒有可用的「快速路徑」,PEP 必須呼叫 RequestWorker 以異步方式完成轉換,如上一段所述。

如需作用中和閑置條件的詳細資訊,請參閱 元件層級電源管理

針對PEP_DPM_COMPONENT_ACTIVE通知,在 IRQL <= DISPATCH_LEVEL呼叫 AcceptDeviceNotification 例程。

PEP_DPM_WORK

通知 (PEP_DPM_WORK)

值PEP_DPM_WORK。

數據 (PEP_DPM_WORK)

PEP_WORK 結構的指標。

每次 PEP 呼叫 RequestWorker 例程以要求 Windows 電源管理架構 (PoFx) 的工作專案時,都會傳送至 PEP 一次。

在 PEP 呼叫 RequestWorker 例程來要求工作項目之後,PoFx 會藉由傳送 PEP PEP_DPM_WORK 通知來回應。 不過,在資源 (之前,不會傳送此通知,也就是處理工作專案所需的背景工作線程) 。 如此一來,PoFx 可確保 PEP 在通知期間傳遞至 PoFx 的工作要求,因為缺少資源而永遠不會失敗。

若要傳送PEP_DPM_WORK通知,操作系統會呼叫 PEP 的 AcceptDeviceNotification 回呼例程。 在此呼叫中,Notification 參數值會PEP_DPM_WORK,而 Data 參數會指向PEP_WORK結構。 在輸入時,PEP 應該假設此結構的內容未初始化。 若要處理此通知,PEP 應該將 WorkInformation 成員設定為指向 PEP 配置的PEP_WORK_INFORMATION結構,描述所要求的工作。 此外,PEP 應該將PEP_WORK結構的 NeedWork 成員設定為 TRUE,以確認 PEP 已處理PEP_DPM_WORK通知,而且 WorkInformation 成員指向有效的PEP_WORK_INFORMATION結構。 如果 PEP 無法處理通知或無法配置PEP_WORK_INFORMATION結構,PEP 應該將 WorkInformation 成員設定為 NULL,並將 NeedWork 成員設定為 FALSE。

對於PEP_DPM_WORK通知,AcceptDeviceNotification 例程一律會在 IRQL = PASSIVE_LEVEL呼叫。

PEP_DPM_POWER_CONTROL_REQUEST

通知 (PEP_DPM_POWER_CONTROL_REQUEST)

值PEP_DPM_POWER_CONTROL_REQUEST。

數據 (PEP_DPM_POWER_CONTROL_REQUEST)

PEP_POWER_CONTROL_REQUEST 結構的指標。

通知 PEP 驅動程式已呼叫 PoFxPowerControl API,以將控件程式代碼直接傳送至 PEP。

當驅動程式呼叫 PoFxPowerControl API,將控制程式代碼直接傳送至 PEP 時,Windows 電源管理架構 (PoFx) 將此通知傳送至 PEP。 在此情況下,通知數據指標會指向PEP_POWER_CONTROL_REQUEST結構

電源控制要求及其語意是在 PEP 寫入器與裝置類別擁有者之間定義。 一般而言,這類介面適用於未在一般化電源管理架構中擷取的裝置類別特定通訊。 例如,UART 控制器可能會將傳輸速率資訊傳達給 PEP,以修改某些平臺時鐘滑軌/分隔線,這類通訊可能會利用電源控制要求。

![注意]PEP 只能在收到PEP_DPM_DEVICE_STARTED通知或PEP_DPM_POWER_CONTROL_REQUEST通知之後,要求將控制程式代碼傳送至裝置。

針對PEP_DPM_POWER_CONTROL_REQUEST通知,在 IRQL <= DISPATCH_LEVEL呼叫 AcceptDeviceNotification 例程。

PEP_DPM_POWER_CONTROL_COMPLETE

通知 (PEP_DPM_POWER_CONTROL_COMPLETE)

值PEP_DPM_POWER_CONTROL_COMPLETE。

數據 (PEP_DPM_POWER_CONTROL_COMPLETE)

PEP_POWER_CONTROL_COMPLETE 結構的指標。

通知 PEP,驅動程式已完成先前由 PEP 發出的電源控制要求

Windows 電源管理架構 (PoFx) 當驅動程式完成先前由 PEP 發出的電源控制要求時,將此通知傳送至 PEP。

![注意]如果 PEP 未發出任何電源控制要求,PEP 可以忽略此通知。

針對PEP_DPM_POWER_CONTROL_COMPLETE通知,在 IRQL <= DISPATCH_LEVEL呼叫 AcceptDeviceNotification 例程。

PEP_DPM_SYSTEM_LATENCY_UPDATE

通知 (PEP_DPM_SYSTEM_LATENCY_UPDATE)

值PEP_DPM_SYSTEM_LATENCY_UPDATE。

數據 (PEP_DPM_SYSTEM_LATENCY_UPDATE)

PEP_SYSTEM_LATENCY 結構的指標。

通知 PEP 作業系統已更新整體系統延遲容錯。

當操作系統更新整體系統延遲容錯時,Windows 電源管理架構 (PoFx) 傳送此通知。

在舊版 PoFx 中,PEP 會使用此通知進行處理器和平臺閑置狀態選取。 透過最新的 PEP 介面,選取程式完全由操作系統處理,因此此通知不再有用。 這裡包含完整性,PEP 應該忽略它。

若要傳送PEP_DPM_SYSTEM_LATENCY_UPDATE通知,PoFx 會呼叫 PEP 的 AcceptDeviceNotification 回呼例程。 針對此通知,在 IRQL <= DISPATCH_LEVEL呼叫 AcceptDeviceNotification 例程。

PEP_DPM_DEVICE_STARTED

通知 (PEP_DPM_DEVICE_STARTED)

值PEP_DPM_DEVICE_STARTED。

數據 (PEP_DPM_DEVICE_STARTED)

PEP_DEVICE_STARTED 結構的指標。

通知 PEP 裝置已啟動,以便接收電源控制交易。

裝置堆疊會在雙步驟程式中向操作系統註冊運行時間電源管理。 驅動程式會先呼叫 PoFxRegisterDevice,以提供元件數目、其閑置狀態和對應屬性的相關信息。 為了回應此呼叫,PEP 會收到PEP_DPM_REGISTER_DEVICE通知。

註冊成功之後,驅動程式有機會 (初始化其元件,也就是設定作用中、更新延遲需求、更新預期的閑置落地等 ) 。 驅動程式完成任何初始化工作之後,它會呼叫 PoFxStartDevicePowerManagement 來通知電源管理員。 為了回應,PEP 會收到PEP_DPM_DEVICE_STARTED通知。 此時,裝置會被視為完全啟用運行時間電源管理。

因此,PEP 無法對驅動程序發出任何電源控制要求,除非它第一次收到PEP_DPM_DEVICE_STARTED通知或PEP_DPM_POWER_CONTROL_REQUEST通知。

注意

如果 PEP 未發出任何電源控制要求,PEP 可以忽略此通知。

針對PEP_DPM_DEVICE_STARTED通知,在 IRQL <= DISPATCH_LEVEL呼叫 AcceptDeviceNotification 例程。

PEP_DPM_NOTIFY_COMPONENT_IDLE_STATE

通知 (PEP_DPM_NOTIFY_COMPONENT_IDLE_STATE)

值PEP_DPM_NOTIFY_COMPONENT_IDLE_STATE。

數據 (PEP_DPM_NOTIFY_COMPONENT_IDLE_STATE)

PEP_NOTIFY_COMPONENT_IDLE_STATE 結構的指標。

當操作系統發出指定元件的閑置狀態轉換時,傳送至 PEP。

當操作系統發出指定元件的閑置狀態轉換時,Windows 電源管理架構 (PoFx) 傳送此通知。

重要

PEP 必須處理此通知。

針對每個閑置狀態轉換,PEP 會在通知驅動程式之前和之後收到通知。 PEP 會檢查PEP_NOTIFY_COMPONENT_IDLE_STATE結構的 DriverNotified 成員,以區分通知前和後置通知。 對於通知後通知,DriverNotified 成員會是 TRUE。

轉換至 F0 時,通常會使用預先通知。 在此情況下,PEP 可能需要重新啟用時鐘或電源資源,讓驅動程序處理 F0 通知時,硬體可供使用。 因此,從 F0 轉換至更深入的閑置狀態時,通常會使用通知後通知。 在驅動程式處理閑置狀態通知之後,PEP 可以安全地關閉時鐘和電源資源。

如果作業花費大量時間或 IRQL 太高而無法同步完成轉換,則處理指定元件的閑置狀態轉換可能需要異步處理。 因此,PEP 可以分別將 Completed 成員設定為 TRUE 或 FALSE,以同步或異步方式完成此通知。

如果通知是以異步方式完成,PEP 會透過要求背景工作角色 (查看 RequestWorker) ,並在產生的PEP_DPM_WORK通知中使用 PepWorkCompleteIdleState 的工作類型填寫所提供的工作信息結構,以通知操作系統完成。

若要傳送PEP_DPM_NOTIFY_COMPONENT_IDLE_STATE通知,PoFx 會呼叫 PEP 的 AcceptDeviceNotification 回呼例程。 這個例程是在 IRQL <= DISPATCH_LEVEL呼叫。

PEP_DPM_REGISTER_DEBUGGER

通知 (PEP_DPM_REGISTER_DEBUGGER)

值PEP_DPM_REGISTER_DEBUGGER。

數據 (PEP_DPM_REGISTER_DEBUGGER)

PEP_REGISTER_DEBUGGER 結構的指標。

通知 PEP,已註冊的裝置可作為偵錯埠。

Windows 電源管理架構 (PoFx) 傳送此通知,以通知 PEP 已註冊的裝置可作為偵錯埠。

針對PEP_DPM_REGISTER_DEBUGGER通知,在 IRQL <= DISPATCH_LEVEL呼叫 AcceptDeviceNotification 例程。

PEP_DPM_LOW_POWER_EPOCH

通知 (PEP_DPM_LOW_POWER_EPOCH)

值PEP_DPM_LOW_POWER_EPOCH。

數據 (PEP_DPM_LOW_POWER_EPOCH)

PEP_LOW_POWER_EPOCH 結構的指標。

此通知已被取代。

PEP_DPM_REGISTER_CRASHDUMP_DEVICE

通知 (PEP_DPM_REGISTER_CRASHDUMP_DEVICE)

值PEP_DPM_REGISTER_CRASHDUMP_DEVICE。

數據 (PEP_DPM_REGISTER_CRASHDUMP_DEVICE)

PEP_REGISTER_CRASHDUMP_DEVICE 結構的指標。

當裝置註冊為損毀傾印處理程式時,Windows 電源管理架構 (PoFx) 傳送此通知。

當系統遇到嚴重錯誤時,產生記憶體轉儲 (損毀傾印) 對於判斷損毀原因而言非常重要。 Windows 預設會在系統遇到錯誤檢查時產生當機傾印。 在此內容中,系統會處於非常受限的作業環境,並停用中斷,且系統 IRQL 位於HIGH_LEVEL。

由於涉及將損毀傾印寫入磁碟的裝置 (,也就是儲存設備控制器、PCI 控制器等 ) 可能會在當機時關閉電源,因此 OS 必須呼叫 PEP 以開啟裝置電源。 因此,OS 會針對損毀傾印堆棧上每個裝置從 PEP 要求回呼 (PowerOnDumpDeviceCallback) ,並在產生傾印檔案時叫用回呼。

假設當機時受限制的環境,PEP 提供的回呼不得存取分頁程式代碼、封鎖任何事件或叫用任何可能執行相同動作的程序代碼。 此外,啟動任何必要資源的程式無法依賴中斷。 因此,如果 PEP 需要等候啟用各種資源,PEP 可能必須還原為輪詢。 如果 PEP 無法在這些條件約束下開啟裝置電源,則不應該處理通知,或未提供回呼例程。

若要傳送PEP_DPM_REGISTER_CRASHDUMP_DEVICE通知,PoFx 會呼叫 PEP 的 AcceptDeviceNotification 回呼例程。 針對此通知,在 IRQL <= HIGH_LEVEL呼叫 AcceptDeviceNotification 例程。

PEP_DPM_DEVICE_IDLE_CONSTRAINTS

通知 (PEP_DPM_DEVICE_IDLE_CONSTRAINTS)

值PEP_DPM_DEVICE_IDLE_CONSTRAINTS。

數據 (PEP_DPM_DEVICE_IDLE_CONSTRAINTS)

PEP_DEVICE_PLATFORM_CONSTRAINTS 結構的指標。 傳送至 PEP 以查詢裝置 D 狀態與平台閑置狀態之間的相依性。

Windows 電源管理架構 (PoFx) 將此通知傳送至 PEP,以查詢裝置 D 狀態與平臺閑置狀態之間的相依性。 PEP 會使用此通知來傳回裝置仍然可以進入的最淺 D 狀態,並進入每個平臺閑置狀態。 操作系統會在進入相關聯的平臺閑置狀態之前,保證裝置處於最低 D 狀態。 如果平臺閑置狀態不依賴此裝置處於任何 D 狀態,PEP 應該指定最低 D 狀態的 PowerDeviceD0。 如果沒有平臺閑置狀態相依於此裝置處於特定 D 狀態,則可以忽略此通知。

此通知會在 PEP 收到PEP_NOTIFY_PPM_QUERY_PLATFORM_STATES通知之後傳送至每個裝置。

若要傳送PEP_DPM_DEVICE_IDLE_CONSTRAINTS通知,PoFx 會呼叫 PEP 的 AcceptDeviceNotification 回呼例程。 在此呼叫中,Notification 參數值PEP_DPM_DEVICE_IDLE_CONSTRAINTS,而 Data 參數會指向PEP_DEVICE_PLATFORM_CONSTRAINTS結構。

對於PEP_DPM_DEVICE_IDLE_CONSTRAINTS通知,AcceptDeviceNotification 例程一律會在 IRQL = DISPATCH_LEVEL呼叫。

PEP_DPM_COMPONENT_IDLE_CONSTRAINTS

通知 (PEP_DPM_COMPONENT_IDLE_CONSTRAINTS)

值PEP_DPM_COMPONENT_IDLE_CONSTRAINTS。

數據 (PEP_DPM_COMPONENT_IDLE_CONSTRAINTS)

PEP_COMPONENT_PLATFORM_CONSTRAINTS 結構的指標。

傳送至 PEP 以查詢元件 F 狀態與平臺閑置狀態之間的相依性。

Windows 電源管理架構 (PoFx) 將此通知傳送至 PEP,以查詢元件 F 狀態與平臺閑置狀態之間的相依性。 PEP 會使用此通知來傳回元件仍然可以進入的最淺 F 狀態,並進入每個平臺閑置狀態。 OS 會先保證元件處於最低 F 狀態,再進入相關聯的平臺閑置狀態。 如果平臺閑置狀態不相依於此元件處於任何 F 狀態,PEP 應該指定最小 F 狀態 0。 如果沒有平臺閑置狀態相依於此元件處於特定 F 狀態,則可以忽略此通知。

比 D0 更深的裝置閒置條件約束比裝置上元件的元件閑置狀態更受限。 針對指定的平臺閑置狀態索引,如果裝置指定了裝置閑置條件約束,則會忽略與裝置相關聯之所有元件的對應元件閑置條件約束。

此通知會在 PEP 收到PEP_NOTIFY_PPM_QUERY_PLATFORM_STATES通知之後,傳送至每個裝置上的每個元件。

若要傳送PEP_DPM_COMPONENT_IDLE_CONSTRAINTS通知,PoFx 會呼叫 PEP 的 AcceptDeviceNotification 回呼例程。 AcceptDeviceNotification 例程一律會在 IRQL = DISPATCH_LEVEL呼叫。

PEP_DPM_QUERY_COMPONENT_PERF_CAPABILITIES

通知 (PEP_DPM_QUERY_COMPONENT_PERF_CAPABILITIES)

值PEP_DPM_QUERY_COMPONENT_PERF_CAPABILITIES。

數據 (PEP_DPM_QUERY_COMPONENT_PERF_CAPABILITIES)

PEP_QUERY_COMPONENT_PERF_CAPABILITIES 結構的指標。

通知 PEP 正在查詢其效能狀態數目, (針對元件定義的 P 狀態) 集。

若要傳送PEP_DPM_QUERY_COMPONENT_PERF_CAPABILITIES通知,PoFx 會呼叫 PEP 的 AcceptDeviceNotification 回呼例程。 在此呼叫中,Notification 參數值PEP_DPM_QUERY_COMPONENT_PERF_CAPABILITIES,而 Data 參數會指向PEP_QUERY_COMPONENT_PERF_CAPABILITIES結構。

對於PEP_DPM_QUERY_COMPONENT_PERF_CAPABILITIES通知,AcceptDeviceNotification 例程一律會在 IRQL = PASSIVE_LEVEL呼叫。

PEP_DPM_QUERY_COMPONENT_PERF_SET

通知 (PEP_DPM_QUERY_COMPONENT_PERF_SET)

值PEP_DPM_QUERY_COMPONENT_PERF_SET。

數據 (PEP_DPM_QUERY_COMPONENT_PERF_SET)

PEP_QUERY_COMPONENT_PERF_SET 結構的指標。

通知 PEP 正在查詢一組效能狀態值的相關信息, (元件的 P 狀態集) 。

若要傳送PEP_DPM_QUERY_COMPONENT_PERF_SET通知,PoFx 會呼叫 PEP 的 AcceptDeviceNotification 回呼例程。 在此呼叫中,Notification 參數值PEP_DPM_QUERY_COMPONENT_PERF_SET,而 Data 參數會指向PEP_QUERY_COMPONENT_PERF_SET結構。

對於PEP_DPM_QUERY_COMPONENT_PERF_SET通知,AcceptDeviceNotification 例程一律會在 IRQL = PASSIVE_LEVEL呼叫。

PEP_DPM_QUERY_COMPONENT_PERF_SET_NAME

通知 (OPEP_DPM_QUERY_COMPONENT_PERF_SET_NAME)

值PEP_DPM_QUERY_COMPONENT_PERF_SET_NAME。

數據 (OPEP_DPM_QUERY_COMPONENT_PERF_SET_NAME)

PEP_QUERY_COMPONENT_PERF_SET_NAME 結構的指標。

通知 PEP 正在查詢一組效能狀態值的相關信息, (元件的 P 狀態集) 。

若要傳送PEP_DPM_QUERY_COMPONENT_PERF_SET_NAME通知,PoFx 會呼叫 PEP 的 AcceptDeviceNotification 回呼例程。 在此呼叫中,Notification 參數值PEP_DPM_QUERY_COMPONENT_PERF_SET_NAME,而 Data 參數會指向PEP_QUERY_COMPONENT_PERF_SET_NAME結構。

對於PEP_DPM_QUERY_COMPONENT_PERF_SET_NAME通知,AcceptDeviceNotification 例程一律會在 IRQL = PASSIVE_LEVEL呼叫。

PEP_DPM_QUERY_COMPONENT_PERF_STATES

通知 (PEP_DPM_QUERY_COMPONENT_PERF_STATES)

值PEP_DPM_QUERY_COMPONENT_PERF_STATES。

數據 (PEP_DPM_QUERY_COMPONENT_PERF_STATES)

PEP_QUERY_COMPONENT_PERF_STATES 結構的指標。

通知 PEP 正在查詢指定 P 狀態集的離散效能狀態清單 (P 狀態) 值。

若要傳送PEP_DPM_QUERY_COMPONENT_PERF_STATES通知,PoFx 會呼叫 PEP 的 AcceptDeviceNotification 回呼例程。 在此呼叫中,Notification 參數值是PEP_DPM_QUERY_COMPONENT_PERF_STATES,而 Data 參數會指向PEP_QUERY_COMPONENT_PERF_STATES結構。

對於PEP_DPM_QUERY_COMPONENT_PERF_STATES通知,AcceptDeviceNotification 例程一律會在 IRQL = PASSIVE_LEVEL呼叫。

PEP_DPM_REGISTER_COMPONENT_PERF_STATES

通知 (PEP_DPM_REGISTER_COMPONENT_PERF_STATES)

值PEP_DPM_REGISTER_COMPONENT_PERF_STATES。

數據 (PEP_DPM_REGISTER_COMPONENT_PERF_STATES)

PEP_REGISTER_COMPONENT_PERF_STATES 結構的指標。

通知 PEP 指定元件的效能狀態 (P 狀態) 。

若要傳送PEP_DPM_REGISTER_COMPONENT_PERF_STATES通知,PoFx 會呼叫 PEP 的 AcceptDeviceNotification 回呼例程。 在此呼叫中,Notification 參數值是PEP_DPM_REGISTER_COMPONENT_PERF_STATES,而 Data 參數會指向PEP_REGISTER_COMPONENT_PERF_STATES結構。

對於PEP_DPM_REGISTER_COMPONENT_PERF_STATES通知,AcceptDeviceNotification 例程一律會在 IRQL = PASSIVE_LEVEL呼叫。

PEP_DPM_REQUEST_COMPONENT_PERF_STATE

通知 (PEP_DPM_REQUEST_COMPONENT_PERF_STATE)

值PEP_DPM_REQUEST_COMPONENT_PERF_STATE。

數據 (PEP_DPM_REQUEST_COMPONENT_PERF_STATE)

PEP_REQUEST_COMPONENT_PERF_STATE 結構的指標。

通知 PEP,Windows 電源管理架構會要求一或多個效能狀態 (P 狀態) 變更, (PoFx) 。

若要傳送PEP_DPM_REQUEST_COMPONENT_PERF_STATE通知,PoFx 會呼叫 PEP 的 AcceptDeviceNotification 回呼例程。 在此呼叫中,Notification 參數值PEP_DPM_REQUEST_COMPONENT_PERF_STATE,而 Data 參數會指向PEP_REQUEST_COMPONENT_PERF_STATE結構。

對於PEP_DPM_REQUEST_COMPONENT_PERF_STATE通知,AcceptDeviceNotification 例程一律會在 IRQL = PASSIVE_LEVEL呼叫。

PEP_DPM_QUERY_CURRENT_COMPONENT_PERF_STATE

通知 (PEP_DPM_QUERY_CURRENT_COMPONENT_PERF_STATE)

值PEP_DPM_QUERY_CURRENT_COMPONENT_PERF_STATE。

數據 (PEP_DPM_QUERY_CURRENT_COMPONENT_PERF_STATE)

PEP_QUERY_CURRENT_COMPONENT_PERF_STATE 結構的指標。

通知 PEP 正在查詢,以取得指定之 P 狀態集中目前 P 狀態的相關信息。

若要傳送PEP_DPM_QUERY_CURRENT_COMPONENT_PERF_STATE通知,PoFx 會呼叫 PEP 的 AcceptDeviceNotification 回呼例程。 在此呼叫中,Notification 參數值會PEP_DPM_QUERY_CURRENT_COMPONENT_PERF_STATE,而 Data 參數會指向PEP_QUERY_CURRENT_COMPONENT_PERF_STATE結構。

對於PEP_DPM_QUERY_CURRENT_COMPONENT_PERF_STATE通知,AcceptDeviceNotification 例程一律會在 IRQL = PASSIVE_LEVEL呼叫。

PEP_DPM_QUERY_DEBUGGER_TRANSITION_REQUIREMENTS

通知 (PEP_DPM_QUERY_DEBUGGER_TRANSITION_REQUIREMENTS)

值PEP_DPM_QUERY_DEBUGGER_TRANSITION_REQUIREMENTS。

數據 (PEP_DPM_QUERY_DEBUGGER_TRANSITION_REQUIREMENTS)

PEP_DEBUGGER_TRANSITION_REQUIREMENTS 結構的指標。

傳送至 PEP 以查詢需要關閉調試程式之一組協調或平台狀態。

Windows 電源管理架構 (PoFx) 將此通知傳送至 PEP,以查詢需要關閉調試程式的一組協調或平台狀態。 如果接受此通知,OS 會執行 PEP 的所有調試程式電源轉換,而 PEP 可能不會使用 TransitionCriticalResource 來電源管理調試程式。

此通知會在 PEP 接受PEP_NOTIFY_PPM_QUERY_PLATFORM_STATE或PEP_NOTIFY_PPM_QUERY_COORDINATED_STATES通知之後傳送至每個調試程式裝置。

若要傳送PEP_DPM_QUERY_DEBUGGER_TRANSITION_REQUIREMENTS通知,PoFx 會呼叫 PEP 的 AcceptDeviceNotification 回呼例程。 針對此通知,AcceptDeviceNotification 例程一律會在 IRQL = DISPATCH_LEVEL呼叫。

PEP_DPM_QUERY_SOC_SUBSYSTEM

通知 (PEP_DPM_QUERY_SOC_SUBSYSTEM)

值PEP_DPM_QUERY_SOC_SUBSYSTEM。

數據 (PEP_DPM_QUERY_SOC_SUBSYSTEM)

PEP_QUERY_SOC_SUBSYSTEM 結構的指標。

傳送至 PEP,以收集晶片上特定系統的基本資訊, (SoC) 子系統。

Windows 電源管理架構 (PoFx) 在平臺閑置狀態初始化之後,將此通知傳送至 PEP,以便收集特定 SoC 子系統的基本資訊。 不會實作SoC子系統會計的 PEP,或未針對指定的平臺閒置狀態實作 PEP 會傳回 FALSE。 這會指示 OS 停止傳送診斷通知給 PEP,以取得此平臺閑置狀態。

系統的 SubsystemCount 和子系統的 MetadataCount 可以使用 PEP/BSP 更新來變更。 SubsystemIndex 可以在每次OS開機時變更。

重要

PEP 無法忽略此通知。 PEP 正在收到此通知,因為它回應了此 PlatformIdleStateIndex 與非零 SubsystemCount 的PEP_DPM_QUERY_SOC_SUBSYSTEM_COUNT通知。

若要傳送PEP_DPM_QUERY_SOC_SUBSYSTEM通知,PoFx 會在 IRQL < DISPATCH_LEVEL呼叫 PEP 的 AcceptDeviceNotification 回呼例程。

PEP_DPM_QUERY_SOC_SUBSYSTEM_BLOCKING_TIME

通知 (PEP_DPM_QUERY_SOC_SUBSYSTEM_BLOCKING_TIME)

值PEP_DPM_QUERY_SOC_SUBSYSTEM_BLOCKING_TIME。

數據 (PEP_DPM_QUERY_SOC_SUBSYSTEM_BLOCKING_TIME)

PEP_QUERY_SOC_SUBSYSTEM_BLOCKING_TIME 結構的指標。

當 OS 想要收集晶片上特定系統的時間 (SoC) 子系統已封鎖進入特定平臺閑置狀態時傳送給 PEP,而不需要 OS 的知識。

操作系統通常會在擴充連線待命會話結束時呼叫此通知,其中OS嘗試進入指定的平臺閑置狀態。 PEP_QUERY_SOC_SUBSYSTEM_COUNT。在子元件初始化期間,PEP 稍早填入的 SubsystemCount 值會指定一次傳送至 PEP 的PEP_DPM_QUERY_SOC_SUBSYSTEM_BLOCKING_TIME通知數目。 PEP 可以接收指定子系統的多個PEP_DPM_QUERY_SOC_SUBSYSTEM_BLOCKING_TIME通知。 這些通知可能會或可能不會與PEP_DPM_RESET_SOC_SUBSYSTEM_ACCOUNTING通知交錯。

重要

PEP 無法忽略此通知。 PEP 正在收到此通知,因為它回應了此 PlatformIdleStateIndex 與非零 SubsystemCount 的PEP_DPM_QUERY_SOC_SUBSYSTEM_COUNT通知。

若要傳送PEP_DPM_QUERY_SOC_SUBSYSTEM_BLOCKING_TIME通知,PoFx 會在 IRQL < DISPATCH_LEVEL呼叫 PEP 的 AcceptDeviceNotification 回呼例程。

PEP_DPM_QUERY_SOC_SUBSYSTEM_COUNT

通知 (PEP_DPM_QUERY_SOC_SUBSYSTEM_COUNT)

值PEP_DPM_QUERY_SOC_SUBSYSTEM_COUNT。

數據 (PEP_DPM_QUERY_SOC_SUBSYSTEM_COUNT)

PEP_QUERY_SOC_SUBSYSTEM_COUNT 結構的指標。

在平臺閑置狀態初始化之後傳送至 PEP,告知 OS PEP 是否支援晶片上的系統 (SoC) 子系統,以考慮指定的平臺閑置狀態。

這是傳送至 PEP 的第一個 SoC 子系統診斷通知。 不會實作SoC子系統會計的 PEP,或未針對指定的平臺閒置狀態實作它,會傳回 FALSE,在此情況下,OS 不會針對此平臺閑置狀態傳送 PEP 任何其他 SoC 子系統診斷通知。

注意

如果 PEP 未針對指定的平臺閒置狀態實作 SoC 診斷通知,PEP 可以忽略此通知。

若要傳送PEP_DPM_QUERY_SOC_SUBSYSTEM_COUNT通知,PoFx 會在 IRQL < DISPATCH_LEVEL呼叫 PEP 的 AcceptDeviceNotification 回呼例程。

PEP_DPM_QUERY_SOC_SUBSYSTEM_METADATA

通知 (PEP_DPM_QUERY_SOC_SUBSYSTEM_METADATA)

值PEP_DPM_QUERY_SOC_SUBSYSTEM_METADATA。

數據 (PEP_DPM_QUERY_SOC_SUBSYSTEM_METADATA)

PEP_QUERY_SOC_SUBSYSTEM_METADATA 結構的指標。

傳送至 PEP,以收集剛查詢封鎖時間之子系統的選擇性元數據。

此通知通常會在PEP_DPM_QUERY_SOC_SUBSYSTEM_BLOCKING_TIME通知之後立即傳送至 PEP。 一個PEP_DPM_QUERY_SOC_SUBSYSTEM_METADATA通知會收集描述子系統的所有索引鍵/值元數據組。

重要

PEP 無法忽略此通知。 PEP 正在收到此通知,因為它回應了此 PlatformIdleStateIndex 與非零 SubsystemCount 的PEP_DPM_QUERY_SOC_SUBSYSTEM_COUNT通知。

若要傳送PEP_DPM_QUERY_SOC_SUBSYSTEM_METADATA通知,PoFx 會呼叫 PEP 的 AcceptDeviceNotification 回呼例程。 針對此通知,會在 IRQL < DISPATCH_LEVEL呼叫 AcceptDeviceNotification 例程。

PEP_DPM_RESET_SOC_SUBSYSTEM_ACCOUNTING

通知 (PEP_DPM_RESET_SOC_SUBSYSTEM_ACCOUNTING)

值PEP_DPM_RESET_SOC_SUBSYSTEM_ACCOUNTING。

數據 (PEP_DPM_RESET_SOC_SUBSYSTEM_ACCOUNTING)

PEP_RESET_SOC_SUBSYSTEM_ACCOUNTING 結構的 A 指標。 結構。

傳送至 PEP 以清除所有子系統封鎖時間和元數據會計、執行所需的任何其他初始化,然後重新啟動會計。

Windows 電源管理架構 (PoFx) 在所有子系統都以 OS 初始化之後,隨時將此通知傳送至 PEP。 一般而言,當操作系統開始新的分析期間時,會呼叫此通知,以在進入連線待命) 時,將系統保留在晶元 (SoC) 以 DRIPS 為目標的指定平臺閑置狀態 (。 OS 只會針對 PEP 初始化一或多個 SoC 子系統的平臺閑置狀態傳送此通知。

若要傳送PEP_DPM_RESET_SOC_SUBSYSTEM_ACCOUNTING通知,PoFx 會在 IRQL < DISPATCH_LEVEL呼叫 PEP 的 AcceptDeviceNotification 回呼例程。