PPM) 通知的處理器電源管理 (
每個處理器電源管理 (PPM) 通知,PEP 的 AcceptProcessorNotification 回呼例程接收會伴隨指出通知類型的 Notification 參數,以及指向包含指定通知類型資訊之數據結構的 Data 參數。
在此呼叫中,Notification 參數會設定為指出通知類型的PEP_NOTIFY_PPM_XXX常數值。 Data 參數指向與此通知類型相關聯的PEP_PPM_XXX結構類型。
AcceptProcessorNotification 回呼例程會使用下列處理器電源管理 (PPM) 通知標識符。
PEP_NOTIFY_PPM_QUERY_CAPABILITIES
Handle
PEPHANDLE 結構,其中包含目標處理器之 PEP 的裝置句柄。 如果通知不是以特定處理器為目標,這會是 NULL。
通知
值PEP_NOTIFY_PPM_QUERY_CAPABILITIES。
資料
PEP_PPM_QUERY_CAPABILITIES 結構的指標。
備註
通知 PEP 正在查詢 PEP 的電源管理功能。
當查詢 PEP 的電源管理功能時,Windows 電源管理架構 (PoFx) 傳送此通知。 這會在處理器初始化時發生,而且將會針對系統中的每個處理器傳送。
具有 x86/AMD64 處理器的平台必須使用 ACPI 介面來進行處理器效能控制。
若要傳送PEP_NOTIFY_PPM_QUERY_CAPABILITIES通知,PoFx 會呼叫 PEP 的 AcceptProcessorNotification 回呼例程。 在此呼叫中,Notification 參數值會PEP_NOTIFY_PPM_QUERY_CAPABILITIES,而 Data 參數會指向PEP_PPM_QUERY_CAPABILITIES結構。
對於PEP_NOTIFY_PPM_QUERY_CAPABILITIES通知,AcceptProcessorNotification 例程一律會在 IRQL = PASSIVE_LEVEL呼叫。
PEP_NOTIFY_PPM_QUERY_IDLE_STATES
通知
值PEP_NOTIFY_PPM_QUERY_IDLE_STATES。
資料
PEP_PPM_QUERY_IDLE_STATES 結構的指標。
備註
通知 PEP 有關閑置狀態。
若要傳送PEP_NOTIFY_PPM_QUERY_IDLE_STATES通知,PoFx 會呼叫 PEP 的 AcceptProcessorNotification 回呼例程。 在此呼叫中,Notification 參數值是PEP_NOTIFY_PPM_QUERY_IDLE_STATES,而 Data 參數會指向PEP_PPM_QUERY_IDLE_STATES結構。
針對PEP_NOTIFY_PPM_QUERY_IDLE_STATES通知,AcceptProcessorNotification 例程一律會在 IRQL = PASSIVE_LEVEL呼叫。
PEP_NOTIFY_PPM_IDLE_SELECT
通知
值PEP_NOTIFY_PPM_IDLE_SELECT。
資料
PEP_PPM_IDLE_SELECT 結構的指標。
備註
通知 PEP 閑置選取。
若要傳送PEP_NOTIFY_PPM_IDLE_SELECT通知,PoFx 會呼叫 PEP 的 AcceptProcessorNotification 回呼例程。 在此呼叫中,Notification 參數值會PEP_NOTIFY_PPM_IDLE_SELECT,而 Data 參數會指向PEP_PPM_IDLE_SELECT結構。
對於PEP_NOTIFY_PPM_IDLE_SELECT通知,AcceptProcessorNotification 例程一律會在 IRQL = PASSIVE_LEVEL呼叫。
PEP_NOTIFY_PPM_IDLE_CANCEL
通知
值PEP_NOTIFY_PPM_IDLE_CANCEL。
資料
PEP_PPM_IDLE_CANCEL 結構的指標。
備註
通知 PEP 取消動作。
若要傳送PEP_NOTIFY_PPM_IDLE_CANCEL通知,PoFx 會呼叫 PEP 的 AcceptProcessorNotification 回呼例程。 在此呼叫中,Notification 參數值會PEP_NOTIFY_PPM_IDLE_CANCEL,而 Data 參數會指向PEP_PPM_IDLE_CANCEL結構。
對於PEP_NOTIFY_PPM_IDLE_CANCEL通知,AcceptProcessorNotification 例程一律會在 IRQL = PASSIVE_LEVEL呼叫。
PEP_NOTIFY_PPM_IDLE_EXECUTE
Handle
PEPHANDLE 結構,其中包含目標處理器之 PEP 的裝置句柄。 如果通知不是以特定處理器為目標,這會是 NULL。
通知
值PEP_NOTIFY_PPM_IDLE_EXECUTE。
資料
PEP_PPM_IDLE_EXECUTE或PEP_PPM_IDLE_EXECUTE_V2 結構的指標。
備註
傳送至 PEP,將目前的處理器轉換為指定的閑置狀態。
(PoFx) Windows 電源管理架構會將此通知傳送至 PEP,以將目前的處理器轉換為指定的閑置狀態。
PEP 可以準備硬體以進入先前選取的閑置狀態,包括通知核心系統資源的 OS,這些資源可能會受到睡眠轉換影響。 然後,它必須執行停止指令,將處理器轉換為閑置狀態。 從閑置狀態傳回時,PEP 必須復原硬體設定,包括通知核心系統資源的 OS,這些資源在喚醒時可能會作用中。 如果 PEP 無法執行處理器 (和平臺) 閑置狀態,則必須傳回錯誤狀態。
使用協調閑置狀態介面時,OS 會使用包含 CoordinatedStateCount 和 CoordinatedState 字段的PEP_PPM_IDLE_EXECUTE_V2結構,以及閒置轉換將輸入的協調閑置狀態清單。 [PlatformState] 字段會指定輸入的最深層平臺協調閑置狀態,如果有的話。
不使用協調的閑置狀態介面時,OS 會使用 PEP_PPM_IDLE_EXECUTE 結構。
針對PEP_NOTIFY_PPM_IDLE_EXECUTE通知,會呼叫 AcceptProcessorNotification 例程,並停用中斷。
PEP_NOTIFY_PPM_IDLE_COMPLETE
Handle
PEPHANDLE 結構,其中包含目標處理器之 PEP 的裝置句柄。
通知
值PEP_NOTIFY_PPM_IDLE_COMPLETE。
資料
PEP_PPM_IDLE_COMPLETE或結構PEP_PPM_IDLE_COMPLETE_V2指標。
備註
通知 PEP,目前的處理器正在從已完成的閑置轉換中喚醒。
當目前的處理器從已完成的閑置轉換喚醒時,Windows 電源管理架構 (PoFx) 傳送此通知。 如果平臺正在執行平臺閑置轉換,要喚醒的第一個處理器會指出正在結束的平臺閑置狀態。 根據平臺閑置轉換中使用的同步處理類型,從平臺閑置狀態喚醒的第一個處理器可能不是進入平臺閑置狀態的處理器。
如果處理器執行深層閑置狀態,PEP 必須等到它收到完整通知以還原核心內容,或通知 OS 核心資源已還原為止。 操作系統預期在執行通知完成之後,這些資源已經還原。 啟用 Hypervisor 時,PEP 只會在從平臺閑置狀態結束時收到此通知,並將 ProcessorState 字段設定為 PEP_PROCESSOR_IDLE_STATE_UNKNOWN。
使用協調閑置狀態介面時,OS 會使用包含 CoordinatedStateCount 和 CoordinatedState 字段的PEP_PPM_IDLE_COMPLETE_V2結構,以及閑置轉換將會結束的協調閑置狀態清單。 [PlatformState] 字段會指定即將結束的最深層平臺協調閑置狀態,如果有的話。 請注意,如果使用鬆散同步處理,此處理器所結束的協調閑置狀態集可能與它所輸入的一組協調閑置狀態不同。
不使用協調的閑置狀態介面時,OS 會使用 PEP_PPM_IDLE_COMPLETE 結構。
針對PEP_NOTIFY_PPM_IDLE_COMPLETE通知,AcceptProcessorNotification 例程會以停用中斷呼叫,而且一律會在目標處理器上執行。
PEP_NOTIFY_PPM_IS_PROCESSOR_HALTED
Handle
PEPHANDLE 結構,其中包含目標處理器之 PEP 的裝置句柄。 如果通知不是以特定處理器為目標,這會是 NULL。
通知
值PEP_NOTIFY_PPM_IS_PROCESSOR_HALTED。
資料
PEP_PPM_IS_PROCESSOR_HALTED 結構的指標。
備註
傳送至 PEP,以判斷指定的處理器目前是否處於選取的閑置狀態。
Windows 電源管理架構 (PoFx) 將此通知傳送至 PEP,以判斷指定的處理器目前是否在其選取的閑置狀態中停止。 OS 會使用此通知來檢查次要處理器是否已在協調平臺閑置狀態時完整完成轉換至閑置。 PEP 必須保證目標處理器已達到平臺閒置轉換可以安全地 (發生的狀態,例如檢查硬體緩存器,以查看核心是否已停止) 。 一旦此通知指出處理器處於閑置狀態,除非OS明確要求處理器這麼做,否則處理器不得喚醒。
PEP 可能會在IDLE_SELECT與IDLE_COMPLETE通知之間隨時收到此通知。 在閑置轉換期間,保證最多會收到此通知一次。
對於PEP_NOTIFY_PPM_IS_PROCESSOR_HALTED通知,AcceptProcessorNotification 例程會在任何 IRQL 上呼叫,並在任何 IRQL 停用中斷的情況下呼叫,而且永遠不會在目標處理器上執行。
<= HIGH_LEVEL
PEP_NOTIFY_PPM_INITIATE_WAKE
Handle
PEPHANDLE 結構,包含目標處理器 PEP 的裝置句柄。
通知
值PEP_NOTIFY_PPM_INITIATE_WAKE。
資料
結構的指標。
備註
傳送給指定處理器的 PEP,以從不可中斷的閑置狀態起始其喚醒。
Windows 電源管理架構 (PoFx) 將此通知傳送給 PEP,讓指定的處理器從不可中斷的閑置狀態起始喚醒。 PEP 必須使用 NeedInterruptForCompletion 傳回目標處理器的喚醒狀態。 如果處理器需要中斷才能完成從閑置狀態喚醒,則會傳回TRUE。 在此情況下,PEP 必須在從處理此通知傳回時確保目標處理器可中斷。 如果目標處理器已在執行中,且/或最終會結束閑置狀態 (,而且正在進行這項操作) ,而不需要任何軟體產生的中斷,則 NeedInterruptForCompletion 應設定為 FALSE。
注意 PEP 不會同時收到相同處理器的此通知。
對於PEP_NOTIFY_PPM_INITIATE_WAKE通知,AcceptProcessorNotification 例程會在任何 IRQL 呼叫,並停用中斷,而且永遠不會在目標處理器上執行。
<= HIGH_LEVEL
PEP_NOTIFY_PPM_QUERY_FEEDBACK_COUNTERS
Handle
PEPHANDLE 結構,包含目標處理器 PEP 的裝置句柄。 如果通知不是以特定處理器為目標,這會是 NULL。
通知
值PEP_NOTIFY_PPM_QUERY_FEEDBACK_COUNTERS。
資料
PEP_PPM_QUERY_FEEDBACK_COUNTERS 結構的指標。
備註
通知 PEP 正在查詢 PEP,以取得其支援的意見反應計數器清單。
Windows 電源管理架構 (PoFx) 在處理器初始化時傳送此通知,以查詢 PEP,以取得其支持的意見反應計數器清單。
對於PEP_NOTIFY_PPM_QUERY_FEEDBACK_COUNTERS通知,AcceptProcessorNotification 例程一律會在 IRQL = PASSIVE_LEVEL呼叫。
PEP_NOTIFY_PPM_FEEDBACK_READ
Handle
PEPHANDLE 結構,包含目標處理器 PEP 的裝置句柄。 如果通知不是以特定處理器為目標,這會是 NULL。
通知
值PEP_NOTIFY_PPM_FEEDBACK_READ。
資料
PEP_PPM_FEEDBACK_READ 結構的指標。
備註
通知 PEP 正在查詢意見反應計數器的目前值。
Windows 電源管理架構 (PoFx) 在想要查詢意見反應計數器的目前值時傳送此通知。
此通知可能會在中斷停用時傳送。 如果設定計數器的 [親和性] 字段,則會在目標處理器上執行此通知。 否則,此通知可能會從任何處理器執行。
針對PEP_NOTIFY_PPM_FEEDBACK_READ通知,可以在 IRQL = DISPATCH_LEVEL呼叫 AcceptProcessorNotification 例程。
PEP_NOTIFY_PPM_QUERY_PERF_CAPABILITIES
Handle
PEPHANDLE 結構,包含目標處理器 PEP 的裝置句柄。 如果通知不是以特定處理器為目標,這會是 NULL。
通知
值PEP_NOTIFY_PPM_QUERY_PERF_CAPABILITIES。
資料
PEP_PPM_QUERY_PERF_CAPABILITIES 結構的指標。
備註
通知 PEP 正在查詢平臺所支援的效能範圍。
Windows 電源管理架構 (PoFx) 會在處理器初始化時傳送此通知,以查詢平臺支援的效能範圍。 PEP_PPM_QUERY_PERF_CAPABILITIES結構的 DomainId 和 DomainMembers 欄位是用來將效能狀態網域表達到平臺。 每個處理器都是一個效能狀態網域的成員。 操作系統可確保效能網域中的所有處理器都會一起變更效能。
對於PEP_NOTIFY_PPM_QUERY_PERF_CAPABILITIES通知,AcceptProcessorNotification 例程一律會在 IRQL = PASSIVE_LEVEL呼叫。
PEP_NOTIFY_PPM_PERF_CONSTRAINTS
Handle
PEPHANDLE 結構,包含目標處理器 PEP 的裝置句柄。
通知
值PEP_NOTIFY_PPM_PERF_CONSTRAINTS。
資料
PEP_PPM_PERF_CONSTRAINTS 結構的指標。
備註
通知 PEP 正在查詢處理器的目前作業條件約束。
Windows 電源管理架構 (PoFx) 在想要檢查處理器的目前作業限制時傳送此通知。 PEP 會藉由使用控制程式碼執行電源控制程式,以起始OS要求,以重新評估處理器的效能條件約束GUID_PPM_PERF_CONSTRAINT_CHANGE。 InBuffer 和 OutBuffer 必須是 NULL。
PEP 必須等到它收到處理器的PEP_DPM_DEVICE_STARTED通知,再發出處理器的電源控制交易。
對於PEP_NOTIFY_PPM_PERF_CONSTRAINTS通知,AcceptProcessorNotification 例程一律會在 IRQL = PASSIVE_LEVEL呼叫。
PEP_NOTIFY_PPM_PERF_SET
此通知會通知 PEP,處理器目前的作業效能應該變更。
下列描述 AcceptProcessorNotification 的參數。
Handle
PEPHANDLE 結構,包含目標處理器 PEP 的裝置句柄。 如果通知不是以特定處理器為目標,這會是 NULL。
通知
值 PEP_NOTIFY_PPM_PERF_SET。
資料
PEP_PPM_PERF_SET 結構的指標。
備註
Windows 電源管理架構 (PoFx) 在想要變更處理器的目前作業效能時傳送此通知。 此通知可能會在任何處理器上執行時傳送。
對於PEP_NOTIFY_PPM_PERF_SET通知, AcceptProcessorNotification 例程一律會在 IRQL = DISPATCH_LEVEL呼叫。
PEP_NOTIFY_PPM_PARK_SELECTION
Handle
PEPHANDLE 結構,其中包含目標處理器之 PEP 的裝置句柄。 如果通知不是以特定處理器為目標,這會是 NULL。
通知
值PEP_NOTIFY_PPM_PARK_SELECTION。
資料
PEP_PPM_PARK_SELECTION 結構的指標。
備註
通知 PEP,OS 想要選取一組慣用的處理器核心來駐留。
Windows 電源管理架構 (PoFx) 傳送此通知,以指示 PEP 選取一組要駐留的慣用核心。
PEP_NOTIFY_PPM_PARK_SELECTION已多載,可執行兩個函式:
讓 PEP 從系統中的所有處理器集中選取哪些處理器 (,) 應該停駐,而且應該取消停駐。 讓 PEP 從) 應接收中斷的所有處理器集合中選取哪些處理器 (,而且應該不會收到中斷。 Windows 不提供 PEP 的方法,以區別操作系統正在執行的兩者。 因此,當 PEP 以一組指定的輸入 (AdditionalUnparkedProcessors 計數和 PoPreference) 收到此通知時,除非某些外部事件造成 PEP 喜好設定變更,否則它應該提供一致的輸出 (PepPreference) 。
對於PEP_NOTIFY_PPM_PARK_SELECTION通知,AcceptProcessorNotification 例程一律會在 IRQL = DISPATCH_LEVEL呼叫。
PEP_NOTIFY_PPM_CST_STATES
Handle
PEPHANDLE 結構,其中包含目標處理器之 PEP 的裝置句柄。 如果通知不是以特定處理器為目標,這會是 NULL。
通知
值PEP_NOTIFY_PPM_CST_STATES。
資料
PEP_PPM_CST_STATES 結構的指標。
備註
傳送至 PEP,以指出處理器支援的 ACPI 定義 C 狀態集合。
Windows 電源管理架構 (PoFx) 將此通知傳送至 PEP,以指出處理器支援的 ACPI 定義 C 狀態集。 此通知會在第一次 PEP 收到處理器的PEP_NOTIFY_PPM_QUERY_IDLE_STATES_V2通知之前傳送一次,而處理器收到通知 (0x81) 表示_CST物件已變更。
對於PEP_NOTIFY_PPM_CST_STATES通知,AcceptProcessorNotification 例程一律會在 IRQL = PASSIVE_LEVEL呼叫。
PEP_NOTIFY_PPM_QUERY_PLATFORM_STATES
Handle
PEPHANDLE 結構,其中包含目標處理器之 PEP 的裝置句柄。 如果通知不是以特定處理器為目標,這會是 NULL。
通知
值PEP_NOTIFY_PPM_QUERY_PLATFORM_STATES。
資料
PEP_PPM_QUERY_PLATFORM_STATES 結構的指標。
備註
在處理器初始化時傳送,以查詢 PEP 支援的平臺閑置狀態數目。
Windows 電源管理架構 (PoFx) 會在處理器初始化時將此通知傳送至 PEP,以查詢支援的平臺閑置狀態數目。 此通知會在開機時傳送一次。 傳回非零數目的平臺狀態之後,PEP 就可以開始在處理器閑置轉換期間選取平臺閑置狀態。
對於PEP_NOTIFY_PPM_QUERY_PLATFORM_STATES通知,AcceptProcessorNotification 例程一律會在 IRQL = PASSIVE_LEVEL呼叫。
PEP_NOTIFY_PPM_QUERY_LP_SETTINGS
通知
值PEP_NOTIFY_PPM_QUERY_LP_SETTINGS。
資料
PEP_PPM_QUERY_LP_SETTINGS 結構的指標。
備註
若要傳送PEP_NOTIFY_PPM_QUERY_LP_SETTINGS通知,PoFx 會呼叫 PEP 的 AcceptProcessorNotification 回呼例程。 在此呼叫中,Notification 參數值會PEP_NOTIFY_PPM_QUERY_LP_SETTINGS,而 Data 參數會指向PEP_PPM_QUERY_LP_SETTINGS結構。
對於PEP_NOTIFY_PPM_QUERY_LP_SETTINGS通知,AcceptProcessorNotification 例程一律會在 IRQL = PASSIVE_LEVEL呼叫。
PEP_NOTIFY_PPM_QUERY_IDLE_STATES_V2
Handle
PEPHANDLE 結構,其中包含目標處理器之 PEP 的裝置句柄。 如果通知不是以特定處理器為目標,這會是 NULL。
通知
值PEP_NOTIFY_PPM_QUERY_IDLE_STATES_V2。
資料
PEP_PPM_QUERY_IDLE_STATES_V2 結構的指標。
備註
用於處理器初始化,以查詢 PEP 支援的閑置狀態清單。
Windows 電源管理架構 (PoFx) 將此通知傳送至處理器初始化時的 PEP,以查詢其支援的閑置狀態清單。
Count 成員會指定閑置狀態陣列的大小。 處理器驅動程式會在傳送此通知之前,先查詢具有PEP_NOTIFY_PPM_QUERY_CAPABILITIES的閑置狀態數目。
PEP 會填入IdleStates陣列,其中包含其支援之每個閒置狀態的相關信息。 閑置狀態應該以降低耗電量/增加轉換成本的順序列出。 不需要 PEP 來報告每個處理器的相同閒置狀態清單。
對於PEP_NOTIFY_PPM_QUERY_IDLE_STATES_V2通知,AcceptProcessorNotification 例程一律會在 IRQL = PASSIVE_LEVEL呼叫。
PEP_NOTIFY_PPM_QUERY_PLATFORM_STATE
Handle
PEPHANDLE 結構,其中包含目標處理器之 PEP 的裝置句柄。 如果通知不是以特定處理器為目標,這會是 NULL。
通知
值PEP_NOTIFY_PPM_QUERY_PLATFORM_STATE。
資料
PEP_PPM_QUERY_PLATFORM_STATE 結構的指標。
備註
傳送至 PEP 以查詢單一平臺閑置狀態的屬性。
Windows 電源管理架構 (PoFx) 會在處理器初始化時傳送此通知,以查詢單一平臺閑置狀態的屬性。
PEP_PPM_QUERY_PLATFORM_STATE 結構的 StateIndex 參數會指定要查詢的平臺閑置狀態索引。 處理器驅動程式會在傳送此通知之前,先查詢PEP_NOTIFY_PPM_QUERY_PLATFORM_STATES支援的平臺閑置狀態數目。 處理器驅動程序接著會針對每個平臺閑置狀態傳送一個PEP_NOTIFY_PPM_QUERY_PLATFORM_STATE通知。 處理器驅動程式會等到所有處理器都向 PEP 註冊之後,才會傳送此通知。
PEP 會填入狀態結構,其中包含平臺閑置狀態的相關信息。 平台閑置狀態應該以降低耗電量/增加轉換成本的順序列出。
對於PEP_NOTIFY_PPM_QUERY_PLATFORM_STATE通知,AcceptProcessorNotification 例程一律會在 IRQL = PASSIVE_LEVEL呼叫。
PEP_NOTIFY_PPM_TEST_IDLE_STATE
Handle
PEPHANDLE 結構,其中包含目標處理器之 PEP 的裝置句柄。 如果通知不是以特定處理器為目標,這會是 NULL。
通知
值PEP_NOTIFY_PPM_TEST_IDLE_STATE。
資料
PEP_PPM_TEST_IDLE_STATE 結構的指標。
備註
用來測試指定的處理器和平臺閑置狀態是否可以在指定的處理器上輸入。
Windows 電源管理架構 (PoFx) 傳送此通知,以測試指定的處理器和平臺閑置狀態是否可以在指定的處理器上輸入。 如果可以輸入閑置狀態,PEP 會填入 veto 程式代碼PEP_IDLE_VETO_NONE並完成閒置轉換。 如果因為某些原因而無法完成閒置轉換,PEP 會填入非零的 veto 程式代碼。
0x80000000 0xffffffff範圍中的重要 Veto 程式代碼會保留供作業系統使用,而且可能無法使用。
傳送此通知時,操作系統已驗證與所選處理器或平臺閑置狀態相關聯的所有條件約束都已符合,包括平臺閑置轉換的裝置和處理器條件約束。
此通知會在操作系統嘗試進入任何處理器或平臺閑置狀態之前傳送,但索引為 0 的處理器閑置狀態除外,這一律必須可進入。 使用 PEP_IDLE_VETO_NONE 完成此通知並不保證操作系統會進入指定的閑置狀態。 此通知會在中斷停用時傳送。 此通知一律會在目標處理器上執行。
對於PEP_NOTIFY_PPM_TEST_IDLE_STATE通知,會呼叫 AcceptProcessorNotification 例程並停用中斷。
PEP_NOTIFY_PPM_IDLE_PRE_EXECUTE
Handle
PEPHANDLE 結構,包含目標處理器 PEP 的裝置句柄。 如果通知不是以特定處理器為目標,這會是 NULL。
通知
值PEP_NOTIFY_PPM_IDLE_PRE_EXECUTE。
資料
PEP_PPM_IDLE_EXECUTE或PEP_PPM_IDLE_EXECUTE_V2 結構的指標。
備註
傳送至 PEP 以準備系統以轉換至指定的閑置狀態。
Windows 電源管理架構 (PoFx) 將此通知傳送至 PEP,以準備系統轉換為指定的閑置狀態。 成功完成此通知后,OS 會輸入相關聯的 C 狀態,將處理器轉換為閑置。 如果 PEP 無法準備系統以進入處理器 (和平臺) 閑置狀態,則必須傳回錯誤狀態。
啟用 Hypervisor 時,PEP 只會在進入平臺閑置狀態時收到此通知,並將 ProcessorState 字段設定為 PEP_PROCESSOR_IDLE_STATE_UNKNOWN。
使用協調閑置狀態介面時,OS 會使用包含 CoordinatedStateCount 和 CoordinatedState 字段的PEP_PPM_IDLE_EXECUTE_V2結構,以及閒置轉換將輸入的協調閑置狀態清單。 [PlatformState] 字段會指定輸入的最深層平臺協調閑置狀態,如果有的話。
不使用協調的閑置狀態介面時,OS 會使用PEP_PPM_IDLE_EXECUTE結構。
對於PEP_NOTIFY_PPM_IDLE_PRE_EXECUTE通知,會呼叫 AcceptProcessorNotification 例程並停用中斷,而且一律會在目標處理器上執行。
PEP_NOTIFY_PPM_UPDATE_PLATFORM_STATE
Handle
PEPHANDLE 結構,包含目標處理器 PEP 的裝置句柄。 如果通知不是以特定處理器為目標,這會是 NULL。
通知
值PEP_NOTIFY_PPM_UPDATE_PLATFORM_STATE。
資料
PEP_PPM_QUERY_PLATFORM_STATE 結構的指標。
備註
通知 PEP 處理器已收到通知 (0x81) ,以更新平台閑置狀態的特性。
當處理器收到通知 (0x81) 以更新平臺閑置狀態的特性時,Windows 電源管理架構 (PoFx) 傳送此通知。 此通知會針對每個平臺閑置狀態傳送一次。 如果 PEP 不接受通知 (亦即會從其 AcceptProcessorNotification 回呼) 傳回 FALSE,則會保留最近接受PEP_NOTIFY_PPM_QUERY_PLATFORM_STATE或PEP_NOTIFY_PPM_UPDATE_PLATFORM_STATE通知的平臺閑置狀態先前定義。
此通知會使用與PEP_NOTIFY_PPM_QUERY_PLATFORM_STATE通知相同的數據緩衝區。
對於PEP_NOTIFY_PPM_UPDATE_PLATFORM_STATE通知,AcceptProcessorNotification 例程一律會在 IRQL = PASSIVE_LEVEL呼叫。
PEP_NOTIFY_PPM_QUERY_PLATFORM_STATE_RESIDENCIES
Handle
PEPHANDLE 結構,包含目標處理器 PEP 的裝置句柄。 如果通知不是以特定處理器為目標,這會是 NULL。
通知
值PEP_NOTIFY_PPM_QUERY_PLATFORM_STATE_RESIDENCIES。
資料
PEP_PPM_PLATFORM_STATE_RESIDENCIES 結構的指標。
備註
通知 PEP,其應該擷取自開機後,在每個平臺閑置狀態中花費的實際累積時間。
Windows 電源管理架構 (PoFx) 會將此通知傳送至 PEP,以擷取自開機後每個平臺閑置狀態所花費的實際累積時間。 因此,此查詢僅適用於基礎硬體可能會自發決定進入與OS要求不同的平臺閑置狀態的平臺。 傳回的值會用於診斷用途,並識別操作系統對平臺閑置狀態落地的檢視與平臺實際達成的不同之處。
Count 會指定 States 陣列中的項目數目,其中元素索引會對應至平臺閑置狀態索引。 PEP 會以相符狀態的實際落地和轉換計數填滿每個元素。
注意 此查詢所擷取的累積值應該只會對應到 PEP (或處理器驅動程式) 實際執行平臺閑置狀態轉換的期間。 這可確保 OS 計算落地與實際落地之間的比較有意義。
對於PEP_NOTIFY_PPM_QUERY_PLATFORM_STATE_RESIDENCIES通知,可以在任何 IRQL 呼叫 AcceptProcessorNotification 例程。
PEP_NOTIFY_PPM_QUERY_VETO_REASONS
Handle
PEPHANDLE 結構,包含目標處理器 PEP 的裝置句柄。 如果通知不是以特定處理器為目標,這會是 NULL。
通知
值PEP_NOTIFY_PPM_QUERY_VETO_REASONS。
資料
PEP_PPM_QUERY_VETO_REASONS 結構的指標。
備註
用來查詢 PEP 在 ProcessorIdleVeto 和 PlatformIdleVeto 回呼中使用的唯一 Veto 原因數目。
Windows 電源管理架構 (PoFx) 在處理器初始化時傳送此通知,以查詢 PEP 在 ProcessorIdleVeto 和 PlatformIdleVeto 回呼中使用的唯一 Veto 原因數目。 此通知是選擇性的,而且 PEP 可能會忽略。
如果接受,則允許 PEP 使用介於 1 到 VetoReasonCount 之間的 Veto 原因,包含任何處理器、平臺或協調閑置狀態。 PEP 不允許使用大於 VetoReasonCount 的 veto 原因。 操作系統會預先配置 veto 追蹤結構,且搭配 PEP_NOTIFY_PPM_ENUMERATE_BOOT_VETOES 使用時,保證所有處理器、平臺和協調狀態 veto 回呼都會成功。
如果 PEP 不接受此通知,PEP 可能會使用 ProcessorIdleVeto 和 PlatformIdleVeto 回呼,並具有任何合法原因。 OS 不保證回呼不會因為配置失敗或其他問題而失敗。
對於PEP_NOTIFY_PPM_QUERY_VETO_REASONS通知,AcceptProcessorNotification 例程一律會在 IRQL = PASSIVE_LEVEL呼叫。
PEP_NOTIFY_PPM_QUERY_VETO_REASON
Handle
PEPHANDLE 結構,包含目標處理器 PEP 的裝置句柄。 如果通知不是以特定處理器為目標,這會是 NULL。
通知
值PEP_NOTIFY_PPM_QUERY_VETO_REASON。
資料
PEP_PPM_QUERY_VETO_REASON 結構的指標。
備註
傳送至 PEP 以查詢特定 Veto 原因的相關信息。
Windows 電源管理架構 (PoFx) 在處理器初始化時傳送此通知,以查詢特定 Veto 原因的相關信息。 此通知會針對每個 Veto 原因傳送兩次,一次具有 NULLName 緩衝區來擷取 Name 所需的配置大小,一次具有非 NULLName 緩衝區以填入 Name 的內容。 此名稱應該是人類可讀取的字串,指出此 Veto 原因所代表的條件。 診斷未輸入閑置狀態的原因時,WPA 和核心調試程式等偵錯工具會顯示 [名稱]。
對於PEP_NOTIFY_PPM_QUERY_VETO_REASON通知,AcceptProcessorNotification 例程一律會在 IRQL = PASSIVE_LEVEL呼叫。
PEP_NOTIFY_PPM_ENUMERATE_BOOT_VETOES
Handle
PEPHANDLE 結構,包含目標處理器 PEP 的裝置句柄。 如果通知不是以特定處理器為目標,這會是 NULL。
通知
值PEP_NOTIFY_PPM_ENUMERATE_BOOT_VETOES。
資料
NULL 指標值。
備註
通知 PEP 操作系統已準備好接受對 ProcessorIdleVeto 或 PlatformIdleVeto 的呼叫。
Windows 電源管理架構 (PoFx) 會在處理器初始化之後傳送此通知,但在第一個閑置專案之前,表示操作系統已準備好接受對 ProcessorIdleVeto 或 PlatformIdleVeto 的呼叫。 PEP 可能會列舉此通知內容中的任何開機時間 Veto,且 OS 保證會在第一次嘗試選取處理器、平台或協調閑置狀態之前生效。 此通知沒有相關聯的 Data 參數。
對於PEP_NOTIFY_PPM_ENUMERATE_BOOT_VETOES通知,AcceptProcessorNotification 例程一律會在 IRQL = PASSIVE_LEVEL呼叫。
PEP_NOTIFY_PPM_PARK_MASK
Handle
PEPHANDLE 結構,包含目標處理器 PEP 的裝置句柄。 如果通知不是以特定處理器為目標,這會是 NULL。
通知
值PEP_NOTIFY_PPM_PARK_MASK。
資料
PEP_PPM_PARK_MASK 結構的指標。
備註
通知 PEP 目前的核心停駐掩碼。
Windows 電源管理架構 (PoFx) 會在運行時間傳送此通知,以通知 PEP 目前的核心停駐掩碼。
對於PEP_NOTIFY_PPM_PARK_MASK通知,AcceptProcessorNotification 例程會在 IRQL = DISPATCH_LEVEL呼叫,而且可能會在任何處理器上執行時傳送。
PEP_NOTIFY_PPM_PARK_SELECTION_V2
Handle
PEPHANDLE 結構,包含目標處理器 PEP 的裝置句柄。 如果通知不是以特定處理器為目標,這會是 NULL。
通知
值PEP_NOTIFY_PPM_PARK_SELECTION_V2。
資料
PEP_PPM_PARK_SELECTION_V2 結構的指標。
備註
通知 PEP,OS 想要選取一組慣用的核心來駐留或引導中斷。 如果不接受此通知,OS 將會回復為傳送PEP_NOTIFY_PPM_PARK_SELECTION通知。
執行其效能檢查演算法時,OS 可能會多次傳送PEP_NOTIFY_PPM_PARK_SELECTION_V2通知:每個駐留網域內每個核心效率類別的零次或多次,以及零次或多次進行中斷控制。 為了協助 PEP 提供一致的作業系統回應以進行效能檢查,OS 會提供提示通知之效能檢查評估的中斷時間時間戳。 一個效能檢查評估所產生的所有駐留選取通知都會有相同的時間戳。 請注意,其餘欄位 (Count、AdditionalUnparkedProcessors、EvaluationType 和 Processors) 可能會因為相同效能檢查評估期間傳送的通知而有所不同,PEP 無法假設它們會維持不變。
對於PEP_NOTIFY_PPM_PARK_SELECTION通知,AcceptProcessorNotification 例程一律會在 IRQL = DISPATCH_LEVEL呼叫。
PEP_NOTIFY_PPM_PERF_CHECK_COMPLETE
Handle
PEPHANDLE 結構,包含目標處理器 PEP 的裝置句柄。 如果通知不是以特定處理器為目標,這會是 NULL。
通知
值PEP_NOTIFY_PPM_PERF_CHECK_COMPLETE。
資料
PEP_PPM_PERF_CHECK_COMPLETE 結構的指標。
備註
通知 PEP,定期效能檢查評估已完成。
Windows 電源管理架構 (PoFx) 會在運行時間傳送此通知,以通知 PEP 每個檢查評估的定期完成。
對於PEP_NOTIFY_PPM_PERF_CHECK_COMPLETE通知,AcceptProcessorNotification 例程會在 IRQL = DISPATCH_LEVEL呼叫,而且可能會在任何處理器上執行時傳送。
PEP_NOTIFY_PPM_QUERY_COORDINATED_DEPENDENCY
Handle
PEPHANDLE 結構,包含目標處理器 PEP 的裝置句柄。 如果通知不是以特定處理器為目標,這會是 NULL。
通知
值PEP_NOTIFY_PPM_QUERY_COORDINATED_DEPENDENCY。
資料
PEP_PPM_QUERY_COORDINATED_DEPENDENCY 結構的指標。
備註
傳送至 PEP,以查詢每個協調閑置狀態的相依性。
Windows 電源管理架構 (PoFx) 在處理器初始化時傳送此通知,以查詢 PEP 中每個協調閑置狀態的相依性。 OS 會配置 Dependencies 陣列的 MaximumDependencySize 元素。 PEP 必須填入 DependencySizeUsed 中使用的陣列元素數目。
如果所表示的相依性位於處理器上,PEP 會在 TargetProcessor 欄位中填入目標處理器的 POHANDLE。 然後,ExpectedState 欄位會參考目標處理器上處理器閑置狀態的索引。
如果所表示的相依性位於其他協調閑置狀態上,PEP 會填入 TargetProcessor 的 NULL。 然後,ExpectedState 字段會參考協調閑置狀態的索引。
每個相依性都會列出允許操作系統用來滿足相依性的選項功能表。 閑置時,OS 會藉由檢查每個條件,從最高索引到最低索引,嘗試滿足相依性。 如果符合相依性的條件,OS 會考慮符合相依性。 如果無法符合任何條件,就不會符合相依性,而且可能不會輸入協調的閑置狀態。
對於PEP_NOTIFY_PPM_QUERY_COORDINATED_DEPENDENCY通知,AcceptProcessorNotification 例程一律會在 IRQL = PASSIVE_LEVEL呼叫。
PEP_NOTIFY_PPM_QUERY_COORDINATED_STATE_NAME
Handle
PEPHANDLE 結構,包含目標處理器 PEP 的裝置句柄。 如果通知不是以特定處理器為目標,這會是 NULL。
通知
值PEP_NOTIFY_PPM_QUERY_COORDINATED_STATE_NAME。
資料
PEP_PPM_QUERY_STATE_NAME 結構的指標。
備註
傳送至 PEP 以查詢特定協調或平臺閑置狀態的相關信息。
Windows 電源管理架構 (PoFx) 在處理器初始化時傳送此通知,以查詢 PEP,以取得特定協調或平臺閑置狀態的相關信息。 此通知會針對每個狀態傳送兩次,一次具有NULL名稱緩衝區來擷取 Name 所需的配置大小,一次具有非 NULL 名稱緩衝區以填入 Name 的內容。 此名稱應該是人類可讀取的字串,指出協調閑置狀態的名稱。 協調閑置狀態應該具有唯一的名稱,但多叢集系統上的對等狀態名稱可能相同。 WPA 和核心調試程式等偵錯工具會在參考此協調/平台閑置狀態的診斷中顯示 [名稱]。
對於PEP_NOTIFY_PPM_QUERY_COORDINATED_STATE_NAME通知,AcceptProcessorNotification 例程一律會在 IRQL = PASSIVE_LEVEL呼叫。
PEP_NOTIFY_PPM_QUERY_COORDINATED_STATES
Handle
PEPHANDLE 結構,包含目標處理器 PEP 的裝置句柄。 如果通知不是以特定處理器為目標,這會是 NULL。
通知
值PEP_NOTIFY_PPM_QUERY_COORDINATED_STATES。
資料
PEP_PPM_QUERY_COORDINATED_STATES 結構的指標。
備註
用於處理器初始化,以查詢所有協調閑置狀態的屬性。
Windows 電源管理架構 (PoFx) 將此通知傳送至處理器初始化的 PEP,以查詢所有協調閑置狀態的屬性。 此通知會在 PEP 傳送PEP_NOTIFY_PPM_QUERY_PLATFORM_STATE通知之前傳送。 如果已接受,PEP 會使用協調的閑置狀態介面,而且不會收到任何PEP_NOTIFY_PPM_QUERY_PLATFORM_STATE通知。 如果未接受,PEP 會使用平臺閑置狀態介面,而OS將會回復為使用PEP_NOTIFY_PPM_QUERY_PLATFORM_STATE通知來查詢協調閑置狀態。
OS 會等候傳送此通知,直到所有處理器都向 PEP 註冊為止。
PEP 會填入狀態結構,其中包含協調閑置狀態的相關信息。
協調閑置狀態的順序必須遵循下列規則:
兩個協調狀態,代表相同功能單位的不同電源狀態,應依最輕量 (耗電量/最低轉換成本) 到最深的 (最小耗電量/大部分轉換成本) 的順序列出。 協調閑置狀態可能只取決於其他具有較低索引的協調閑置狀態。 兩個脫離協調閑置狀態 (之間不需要順序,也就是相依於不相依處理器集合的兩個協調閑置狀態) 。
對於PEP_NOTIFY_PPM_QUERY_COORDINATED_STATES通知,AcceptProcessorNotification 例程一律會在 IRQL = PASSIVE_LEVEL呼叫。
PEP_NOTIFY_PPM_QUERY_PROCESSOR_STATE_NAME
Handle
PEPHANDLE 結構,包含目標處理器 PEP 的裝置句柄。 如果通知不是以特定處理器為目標,這會是 NULL。
通知
值PEP_NOTIFY_PPM_QUERY_PROCESSOR_STATE_NAME。
資料
PEP_PPM_QUERY_STATE_NAME 結構的指標。
備註
傳送至 PEP 以查詢特定處理器閑置狀態的相關信息。
Windows 電源管理架構 (PoFx) 會在處理器初始化時傳送此通知,以查詢 PEP,以取得特定處理器閑置狀態的相關信息。 此通知會針對每個狀態傳送兩次,一次具有NULL名稱緩衝區來擷取 Name 所需的配置大小,一次具有非 NULL 名稱緩衝區以填入 Name 的內容。 此名稱應該是人類可讀取的字串,指出協調閑置狀態的名稱。 協調閑置狀態應該具有唯一的名稱,但多叢集系統上的對等狀態名稱可能相同。 WPA 和核心調試程式等偵錯工具會在參考此協調/平台閑置狀態的診斷中顯示 [名稱]。
對於PEP_NOTIFY_PPM_QUERY_PROCESSOR_STATE_NAME通知,AcceptProcessorNotification 例程一律會在 IRQL = PASSIVE_LEVEL呼叫。
PEP_NOTIFY_PPM_ENTER_SYSTEM_STATE
Handle
PEPHANDLE 結構,包含目標處理器 PEP 的裝置句柄。 如果通知不是以特定處理器為目標,這會是 NULL。
通知
值PEP_NOTIFY_PPM_ENTER_SYSTEM_STATE。
資料
PEP_PPM_ENTER_SYSTEM_STATE 結構的指標。
備註
PEP_NOTIFY_PPM_ENTER_SYSTEM_STATE是選擇性通知,通知 PEP 系統即將進入系統電源狀態。 此通知會在系統完成處理器轉換為系統電源狀態的所有被動層級工作之後,同時傳送給所有處理器。
此通知會在DISPATCH_LEVEL傳送,並在分派時傳送所有處理器。 此通知一律會在目標處理器上執行。
注意 PEP 不得將此通知中的任何工作排入佇列。 傳送此通知之後,處理器將不會處理工作專案、DPC 等。
DISPATCH_LEVEL
PEP_NOTIFY_PPM_PERF_SET_STATE
下列描述 AcceptProcessorNotification 的參數。
Handle
PEPHANDLE 結構,包含目標處理器 PEP 的裝置句柄。 如果通知不是以特定處理器為目標,這會是 NULL。
通知
值 PEP_NOTIFY_PPM_PERF_SET_STATE。
資料
PEP_PPM_PERF_SET_STATE 結構的指標。
備註
在運行時間用來設定處理器的目前作業效能狀態。 如果 PEP 具有能夠在沒有效能設定要求的情況下提升/ 降低效能的自發性硬體,它應該根據最低效能狀態和 / 或最大效能狀態來限制來自自發硬體的要求,並以所需的效能狀態為目標。 否則,它應該會以完全相同所需的效能狀態執行。
此通知會在DISPATCH_LEVEL傳送。 如果排程器導向效能狀態正在使用中,PEP 必須遵守處理此通知時,3.3.6 節的限制。 它可以在任何處理器上執行時傳送。
PEP_NOTIFY_PPM_QUERY_DISCRETE_PERF_STATES
Handle
PEPHANDLE 結構,包含目標處理器 PEP 的裝置句柄。 如果通知不是以特定處理器為目標,這會是 NULL。
通知
值PEP_NOTIFY_PPM_QUERY_DISCRETE_PERF_STATES。
資料
PEP_PPM_QUERY_DISCRETE_PERF_STATES 結構的指標。 如果PEP_NOTIFY_PPM_QUERY_CAPABILITIES通知指出支援離散效能狀態,則用於處理器初始化以查詢 PEP 支援的離散效能狀態清單。
效能狀態清單應該從最快到最慢的順序排序,每個效能狀態對應至不同的效能值。 效能狀態清單也應該包含符合PEP_NOTIFY_PPM_QUERY_PERF_CAPABILITIES通知中列出的每個效能值的專案。 此通知會在PASSIVE_LEVEL傳送。 它可以在任何處理器上執行時傳送。
PEP_NOTIFY_PPM_QUERY_DOMAIN_INFO
Handle
PEPHANDLE 結構,包含目標處理器 PEP 的裝置句柄。 如果通知不是以特定處理器為目標,這會是 NULL。
通知
值PEP_NOTIFY_PPM_QUERY_DOMAIN_INFO。
資料
PEP_PPM_QUERY_DOMAIN_INFO 結構的指標。
備註
選擇性通知,可查詢效能網域的相關信息。 此通知會在PASSIVE_LEVEL傳送。 它可以在任何處理器上執行時傳送。
PEP_NOTIFY_PPM_RESUME_FROM_SYSTEM_STATE
Handle
PEPHANDLE 結構,包含目標處理器 PEP 的裝置句柄。 如果通知不是以特定處理器為目標,這會是 NULL。
通知
值PEP_NOTIFY_PPM_RESUME_FROM_SYSTEM_STATE。
資料
PEP_PPM_RESUME_FROM_SYSTEM_STATE 結構的指標。
備註
選擇性通知,通知 PEP 系統剛從系統電源狀態繼續。 此通知會同時傳送給所有處理器,再釋放處理器以繼續被動層級工作。 此通知會在DISPATCH_LEVEL傳送,並在分派時傳送所有處理器。 此通知一律會在目標處理器上執行。