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 eingeben wird. Der Flags-Parameter ist auf null oder auf das bitweise OR eines oder mehrerer der folgenden Flagbits festgelegt.
Flagname | Wert | BESCHREIBUNG |
---|---|---|
PROCESSOR_HALT_CACHE_FLUSH_OVERRIDE | 0x01 | Die Rückrufroutine "Anhalten " des PEP ist für das Leeren der Caches des Prozessors verantwortlich. Wenn dieses Flag nicht festgelegt ist, löscht ProcessorHalt die Caches beim Eintritt in den Prozessor-Leerlaufzustand und ungültig die Caches beim Beenden dieses Zustands. |
PROCESSOR_HALT_CACHE_COHERENT | 0x02 | Bereiten Sie den Prozessor so vor, dass er in einen Leerlaufzustand wechselt, in dem die Caches des Prozessors kohärent bleiben. |
PROCESSOR_HALT_CONTEXT_RETAINED | 0x04 | Bereiten Sie den Prozessor so vor, dass er in einen Leerlaufzustand wechselt, in dem der Threadkontext des Prozessors beibehalten wird. |
PROCESSOR_HALT_RETURN_NOT_SAFE | 0x08 | Die Rückrufroutine "Anhalten " des PEP wird garantiert nicht zurückgegeben. Legen Sie dieses Flag fest, wenn der Rückruf anhalten den Prozessor in einen Kontextverlustzustand übergibt, der von der Hardware nicht abgebrochen werden kann. Wenn dieses Flag festgelegt ist, behandelt das Betriebssystem eine Rückgabe des Rückrufs Anhalten als schwerwiegenden Fehler. |
PROCESSOR_HALT_VIA_PSCI_CPU_SUSPEND | 0x16 |
[in, out, optional] Context
Ein Zeiger auf einen durch PEP definierten Prozessorstoppkontext. Dieser Zeiger wird als Parameter an die Rückrufroutine "Anhalten" übergeben. Dieser Kontext ist für das Windows Power Management Framework (PoFx) nicht transparent.
[in] Halt
Ein Zeiger auf eine von PEP implementierte Rückrufroutine zum Anhalten . PoFx ruft diese Routine auf, nachdem die Vorbereitungen zum Anhalten des Prozessors abgeschlossen wurden. Während dieses Rückrufs wird erwartet, dass pep den Prozessor in den angehaltenen Zustand übergibt.
Rückgabewert
ProcessorHalt gibt STATUS_SUCCESS zurück, wenn der Prozessor erfolgreich zum Anhalten vorbereitet ist. Mögliche Fehlerrückgabewerte sind der folgende status Code.
Rückgabewert | BESCHREIBUNG |
---|---|
|
Der Halt-Parameter ist NULL. oder ein ungültiger Flagwert wurde in Flags angegeben; oder Flags enthält eine unzulässige Kombination von Flagbits. Weitere Informationen finden Sie in den Hinweisen. |
|
Die Rückrufroutine "Anhalten " des PEP wurde unerwartet aus einem Leerlaufzustand zurückgegeben, in dem der Hardwarekontext des Prozessors nicht beibehalten wurde. |
Hinweise
Diese Routine wird vom Power Management Framework (PoFx) implementiert und vom Plattformerweiterungs-Plug-In (PEP) aufgerufen. Der ProcessorHalt-Member der PEP_KERNEL_INFORMATION_STRUCT_V3-Struktur ist ein Zeiger auf eine ProcessorHalt-Routine .
Vor dem Anhalten des Prozessors ruft 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. Nachdem der Prozessor für den Wechsel in den Leerlaufzustand vorbereitet wurde, ruft ProcessorHalt die Rückrufroutine "Anhalten " des PEP auf, um den Prozessor anzuhalten.
Im Rahmen der Behandlung einer PEP_NOTIFY_PPM_IDLE_EXECUTE-Benachrichtigung durch pep muss der Pep den Prozessor in den Leerlaufzustand übergehen, den der PEP ausgewählt hat. Im Folgenden finden Sie zwei Möglichkeiten zum Eingeben des Prozessor-Leerlaufzustands:
- Für einen Prozessor-Leerlaufzustand, in dem die Caches des Prozessors kohärent bleiben, sodass der gesamte System- und Prozessorzustand beibehalten wird, kann pep direkt in den Leerlaufzustand wechseln, ohne zuerst ProcessorHalt aufzurufen.
- Für einen Prozessor-Leerlaufzustand, in dem die Caches des Prozessors möglicherweise nicht kohärent bleiben, oder für einen Leerlaufzustand, in dem der Prozessorhardwarekontext nicht beibehalten wird, muss pep ProcessorHalt aufrufen, bevor der Prozessor in den Leerlaufzustand übergibt.
-
PROCESSOR_HALT_CONTEXT_RETAINED = 1 und PROCESSOR_HALT_RETURN_NOT_SAFE = 1
Die Rückrufroutine "Anhalten " des PEP muss aus 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 dann festgelegt werden, wenn ein Leerlaufzustand eintritt, der nicht im Cache kohärent ist.
-
PROCESSOR_HALT_CACHE_FLUSH_OVERRIDE = 0 und PROCESSOR_HALT_CACHE_COHERENT = 0
Das Cacheleerer-Außerkraftsetzungsflag muss für jeden nicht im Cache zusammenhängenden Stopp 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 cachekohärenten Zustände.
Der PEP kann diese Routine unter IRQL <= HIGH_LEVEL aufrufen.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Unterstützt ab Windows 10. |
Zielplattform | Windows |
Kopfzeile | pep_x.h (Pep_x.h einschließen) |
IRQL | <= HIGH_LEVEL |
Weitere Informationen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für