POFXCALLBACKPROCESSORHALT-Rückruffunktion (pep_x.h)
Die ProcessorHalt Routine bereitet den Prozessor auf das Anhalten vor.
Syntax
POFXCALLBACKPROCESSORHALT Pofxcallbackprocessorhalt;
NTSTATUS Pofxcallbackprocessorhalt(
[in] ULONG Flags,
[in, out, optional] PVOID Context,
[in] PPROCESSOR_HALT_ROUTINE Halt
)
{...}
Parameter
[in] Flags
Flags, die die Eigenschaften des Leerlaufzustands angeben, den der Prozessor eingibt. Der parameter Flags wird auf null oder auf das bitweise ODER eines oder mehrerer der folgenden Flagbits festgelegt.
Flagname | Wert | Beschreibung |
---|---|---|
PROCESSOR_HALT_CACHE_FLUSH_OVERRIDE | 0x01 | Die PEP-Stopp Rückrufroutine ist für das Leeren der Caches des Prozessors verantwortlich. Wenn dieses Flag nicht festgelegt ist, löscht ProcessorHalt die Caches beim Eintrag im Leerlaufzustand des Prozessors und ungültige Caches beim Beenden aus diesem Zustand. |
PROCESSOR_HALT_CACHE_COHERENT | 0x02 | Bereiten Sie den Prozessor auf einen Leerlaufzustand vor, in dem die Caches des Prozessors kohärent bleiben. |
PROCESSOR_HALT_CONTEXT_RETAINED | 0x04 | Bereiten Sie den Prozessor auf einen Leerlaufzustand vor, in dem der Threadkontext des Prozessors erhalten bleibt. |
PROCESSOR_HALT_RETURN_NOT_SAFE | 0x08 | Die PEP Stopp Rückrufroutine wird garantiert nicht zurückgegeben. Legen Sie dieses Kennzeichen fest, wenn der Anhalten Rückruf den Prozessor in einen Kontextverlustzustand übergibt, der von der Hardware nicht abgebrochen werden kann. Wenn dieses Kennzeichen festgelegt ist, behandelt das Betriebssystem eine Rückgabe vom Anhalten Rückruf als schwerwiegender Fehler. |
PROCESSOR_HALT_VIA_PSCI_CPU_SUSPEND | 0x16 |
[in, out, optional] Context
Ein Zeiger auf einen PEP-definierten Prozessorstoppkontext. Dieser Zeiger wird als Parameter an die Anhalten Rückrufroutine übergeben. Dieser Kontext ist für das Windows Power Management Framework (PoFx) undurchsichtig.
[in] Halt
Ein Zeiger auf eine pep-implementierte Anhalten Rückrufroutine. PoFx ruft diese Routine auf, nachdem die Vorbereitungen zum Anhalten des Prozessors abgeschlossen wurden. Während dieses Rückrufs wird erwartet, dass der PEP den Prozessor in den angehaltenen Zustand übergibt.
Rückgabewert
ProcessorHalt gibt STATUS_SUCCESS zurück, wenn der Prozessor erfolgreich bereit ist, angehalten zu werden. Mögliche Fehlerrücklaufwerte sind der folgende Statuscode.
Rückgabewert | Beschreibung |
---|---|
|
Der parameter Halt ist NULL; oder ein ungültiger Flagwert wurde in Flagsangegeben; oder Flags enthält eine unzulässige Kombination von Flagbits. Weitere Informationen finden Sie in den Hinweisen. |
|
Der PEP Stopp Rückrufroutine unerwartet aus einem Leerlaufzustand zurückgegeben, in dem der Hardwarekontext des Prozessors nicht beibehalten wurde. |
Bemerkungen
Diese Routine wird vom Power Management Framework (PoFx) implementiert und vom Plattformerweiterungs-Plug-In (PEP) aufgerufen. Das ProcessorHalt Mitglied der PEP_KERNEL_INFORMATION_STRUCT_V3 Struktur ist ein Zeiger auf eine ProcessorHalt Routine.
Vor dem Anhalten des Prozessors ruft der PEP die ProcessorHalt Routine auf, um PoFx die Möglichkeit zu geben, den Hardwarekontext des Prozessors zu speichern. Bei Bedarf speichert ProcessorHalt diesen Zustand intern in PoFx, sodass der Zustand später wiederhergestellt werden kann, wenn der Prozessor den Leerlaufzustand verlässt. Nach der Vorbereitung des Prozessors auf den Leerlaufzustand ruft ProcessorHalt die PEP-Anhalten Rückrufroutine auf, um den Prozessor anzuhalten.
Im Rahmen der PEP-Behandlung einer PEP_NOTIFY_PPM_IDLE_EXECUTE Benachrichtigung muss der PEP den Prozessor in den Leerlaufzustand überstellen, den der PEP ausgewählt hat. Im Folgenden sind die beiden Methoden zum Eingeben des Prozessor-Leerlaufzustands aufgeführt:
- Für einen Leerlaufzustand des Prozessors, in dem die Caches des Prozessors kohärent bleiben, damit der gesamte System- und Prozessorzustand beibehalten wird, kann der PEP direkt in den Leerlaufzustand wechseln, ohne zuerst ProcessorHaltaufzurufen.
- Für einen Leerlaufzustand des Prozessors, in dem die Caches des Prozessors möglicherweise nicht kohärent bleiben, oder ein Leerlaufzustand, in dem der Prozessorhardwarekontext nicht erhalten bleibt, muss der PEP ProcessorHalt aufrufen, bevor er den Prozessor in den Leerlaufzustand übergibt.
-
PROCESSOR_HALT_CONTEXT_RETAINED = 1 und PROCESSOR_HALT_RETURN_NOT_SAFE = 1
Die PEP-Stopp Rückrufroutine muss von jedem Zustand zurückgegeben werden, in dem der Kontext beibehalten wird.
-
PROCESSOR_HALT_CACHE_FLUSH_OVERRIDE = 1 und PROCESSOR_HALT_CACHE_COHERENT = 1
Das Flag "Cache-Flush-Override" sollte nur festgelegt werden, wenn ein Leerlaufzustand eingegeben wird, der nicht zwischengespeichert wird.
-
PROCESSOR_HALT_CACHE_FLUSH_OVERRIDE = 0 und PROCESSOR_HALT_CACHE_COHERENT = 0
Das Flag "Cache-Flush-Override" muss für einen nicht zwischengespeicherten kohärenten Halt festgelegt werden.
-
PROCESSOR_HALT_CONTEXT_RETAINED = 0 und PROCESSOR_HALT_CACHE_COHERENT = 1
Alle Leerlaufzustände, die den Prozessorhardwarekontext verlieren (und daher das Multiprozessor-Parkprotokoll verwenden, um den Leerlaufzustand zu beenden und die Steuerung an das Betriebssystem zurückzugeben) sind keine cacheeinheitlichen Zustände.
Der PEP kann diese Routine bei IRQL <= HIGH_LEVEL aufrufen.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Wird ab Windows 10 unterstützt. |
Zielplattform- | Fenster |
Header- | pep_x.h (einschließen Pep_x.h) |
IRQL- | <= HIGH_LEVEL |