POFXCALLBACKPROCESSORHALT 回呼函式 (pep_x.h)
ProcessorHalt 例程會準備要停止的處理器。
語法
POFXCALLBACKPROCESSORHALT Pofxcallbackprocessorhalt;
NTSTATUS Pofxcallbackprocessorhalt(
[in] ULONG Flags,
[in, out, optional] PVOID Context,
[in] PPROCESSOR_HALT_ROUTINE Halt
)
{...}
參數
[in] Flags
旗標,指出處理器將輸入之閑置狀態的屬性。 Flags 參數設定為零,或設定為下列一或多個旗標位的位 OR。
旗標名稱 | 值 | Description |
---|---|---|
PROCESSOR_HALT_CACHE_FLUSH_OVERRIDE | 0x01 | PEP 的 Halt 回呼例程負責排清處理器的快取。 如果未 設定此 旗標, ProcessorHalt 將會排清進入處理器閑置狀態的快取,並在結束此狀態時使快取失效。 |
PROCESSOR_HALT_CACHE_COHERENT | 0x02 | 準備處理器以進入閑置狀態,處理器的快取會保持一致。 |
PROCESSOR_HALT_CONTEXT_RETAINED | 0x04 | 準備處理器以進入將保留處理器線程內容的閑置狀態。 |
PROCESSOR_HALT_RETURN_NOT_SAFE | 0x08 | PEP 的 Halt 回呼例程保證不會傳回。 如果 Halt 回呼將處理器轉換為硬體無法取消的內容遺失、電源閘道狀態,請設定此旗標。 設定此旗標時,操作系統會將 「停止 」回呼的傳回視為嚴重錯誤。 |
PROCESSOR_HALT_VIA_PSCI_CPU_SUSPEND | 0x16 |
[in, out, optional] Context
PEP 定義處理器終止內容的指標。 這個指標會當做參數傳遞至 Halt 回呼例程。 此內容與 Windows 電源管理架構 不透明, (PoFx) 。
[in] Halt
PEP 實作 的停止 回呼例程的指標。 PoFx 會在準備停止處理器之後呼叫此例程。 在此回呼期間,PEP 預期會將處理器轉換為 已停止 的狀態。
傳回值
如果處理器順利準備好停止,ProcessorHalt 會傳回STATUS_SUCCESS。 可能的錯誤傳回值包括下列狀態代碼。
傳回值 | 描述 |
---|---|
|
Halt 參數為 NULL;或在 Flags 中指定了無效的旗標值;或 Flags 包含不合法的旗標位組合。 如需詳細資訊,請參閱<備註>。 |
|
PEP 的 Halt 回呼例程意外從處理器的硬體內容未保留的閑置狀態傳回。 |
備註
此例程是由 Power Management Framework (PoFx) 實作,並由平臺擴充功能外掛程式 (PEP) 呼叫。 PEP_KERNEL_INFORMATION_STRUCT_V3 結構的 ProcessorHalt 成員是 ProcessorHalt 例程的指標。
在停止處理器之前,PEP 會呼叫 ProcessorHalt 例程,讓 PoFx 有機會儲存處理器的硬體內容。 如有必要, ProcessorHalt 會將此狀態儲存在PoFx中,以便稍後在處理器結束閑置狀態時還原狀態。 準備處理器進入閑置狀態之後, ProcessorHalt 會 呼叫 PEP 的 Halt 回呼例程來停止處理器。
在 PEP 處理 PEP_NOTIFY_PPM_IDLE_EXECUTE 通知時,PEP 必須將處理器轉換為 PEP 選取的閑置狀態。 以下是進入處理器閑置狀態的兩種方式:
- 對於處理器的快取保持一致的處理器閑置狀態,讓所有系統和處理器狀態保持一致,PEP 可以直接進入閑置狀態,而不需要先呼叫 ProcessorHalt。
- 對於處理器快取可能不會保持一致的處理器閑置狀態,或處理器硬體內容未保留的閑置狀態,PEP 必須先呼叫 ProcessorHalt ,再將處理器轉換為閑置狀態。
-
PROCESSOR_HALT_CONTEXT_RETAINED = 1,PROCESSOR_HALT_RETURN_NOT_SAFE = 1
PEP 的 Halt 回呼例程必須從保留內容的任何狀態傳回。
-
PROCESSOR_HALT_CACHE_FLUSH_OVERRIDE = 1,PROCESSOR_HALT_CACHE_COHERENT = 1
只有在進入非快取一致性的閑置狀態時, 才 應該設定 cache-flush-override 旗標。
-
PROCESSOR_HALT_CACHE_FLUSH_OVERRIDE = 0 且 PROCESSOR_HALT_CACHE_COHERENT = 0
必須針對任何非快取一致停止設定 cache-flush-override 旗標。
-
PROCESSOR_HALT_CONTEXT_RETAINED = 0 且 PROCESSOR_HALT_CACHE_COHERENT = 1
任何遺失處理器硬體內容 (的閑置狀態,因此使用 多處理器停駐通訊協議 來結束閑置狀態,並將控制權傳回操作系統) 不是快取一致的狀態。
PEP 可以在 IRQL <= HIGH_LEVEL呼叫此例程。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 從Windows 10 開始支援。 |
目標平台 | Windows |
標頭 | pep_x.h (包含 Pep_x.h) |
IRQL | <= HIGH_LEVEL |