POFXCALLBACKPROCESSORHALT 回呼函式 (pepfx.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 回呼例程保證不會傳回。 如果 「停止 回呼」將處理器轉換為硬體無法取消的內容遺失電源閘道狀態,請設定此旗標。 設定此旗標時,操作系統會將 「停止 回呼」的傳回視為嚴重錯誤。
PROCESSOR_HALT_VIA_PSCI_CPU_SUSPEND 0x16

[in, out, optional] Context

PEP 定義的處理器終止內容的指標。 這個指標會當做參數傳遞至 Halt 回呼例程。 此內容與PoFx) (Windows 電源管理架構 不透明。

[in] Halt

PEP 實作 的 Halt 回 呼例程的指標。 PoFx 會在準備停止處理器之後呼叫此例程。 在此回呼期間,PEP 預期會將處理器轉換為 已停止 的狀態。

傳回值

如果處理器順利準備好停止,ProcessorHalt 會傳回STATUS_SUCCESS。 可能的錯誤傳回值包括下列狀態代碼。

傳回值 描述
STATUS_INVALID_PARAMETER
Halt 參數為 NULL;或在 Flags 中指定了無效的旗標值;或 Flags 包含不合法的旗標位組合。 如需詳細資訊,請參閱<備註>。
STATUS_UNSUCCESSFUL
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

    任何遺失處理器硬體內容 (的閑置狀態,因此使用 多處理器停駐通訊協定 結束閑置狀態,並將控制權傳回至操作系統) 不是快取一致的狀態。

如果 Flags 參數包含不合法的旗標位組合, ProcessorHalt 會失敗並傳回STATUS_INVALID_PARAMETER。

PEP 可以在 IRQL <= HIGH_LEVEL呼叫此例程。

規格需求

需求
最低支援的用戶端 從Windows 10 開始支援。
目標平台 Windows
標頭 pepfx.h (include Pep_x.h)
IRQL <= HIGH_LEVEL

另請參閱

PEP_KERNEL_INFORMATION_STRUCT_V3

PEP_NOTIFY_PPM_IDLE_EXECUTE