共用方式為


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。

旗標名稱 價值 描述
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。 可能的錯誤傳回值包括下列狀態代碼。

傳回值 描述
STATUS_INVALID_PARAMETER
Halt 參數為 NULL;或 旗標中指定的旗標值無效;或 Flags 包含不合法的旗標位組合。 如需詳細資訊,請參閱。
STATUS_UNSUCCESSFUL
PEP 的 Halt 回呼例程意外地從處理器的硬體內容未保留的閑置狀態傳回。

言論

此例程是由電源管理架構 (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 開始支援。
目標平臺 窗戶
標頭 pepfx.h (include Pep_x.h)
IRQL <= HIGH_LEVEL

另請參閱

PEP_KERNEL_INFORMATION_STRUCT_V3

PEP_NOTIFY_PPM_IDLE_EXECUTE