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 中指定了無效的旗標值;或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 (包含 Pep_x.h)
IRQL <= HIGH_LEVEL

另請參閱

PEP_KERNEL_INFORMATION_STRUCT_V3

PEP_NOTIFY_PPM_IDLE_EXECUTE