Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die KeSetBasePriorityThread Routine legt die Laufzeitpriorität relativ zum aktuellen Prozess für einen bestimmten Thread fest.
Syntax
LONG KeSetBasePriorityThread(
[in, out] PKTHREAD Thread,
[in] LONG Increment
);
Parameter
[in, out] Thread
Zeiger auf ein Dispatcherobjekt vom Typ KTHREAD.
[in] Increment
Gibt den Wert an, der der Basispriorität des Prozesses für die Thread-hinzugefügt werden soll. Dieser Wert kann positiv oder negativ sein.
Der effektive Bereich hängt von der Prioritätsklasse des Prozesses ab:
- Bei Prozessen mit variablen Prioritätsklassen: Die resultierende Priorität muss innerhalb von 1 bis (
LOW_REALTIME_PRIORITY- 1) bleiben. - Für Echtzeit-Prioritätsklassenprozesse: Die resultierende Priorität muss innerhalb
LOW_REALTIME_PRIORITYvonHIGH_PRIORITY
Wenn der absolute Wert von Increment größer oder gleich (HIGH_PRIORITY + 1) / 2ist, tritt die Prioritätssättigung auf, d. h. nachfolgende Änderungen an der übergeordneten Prozessbasispriorität wirken sich nicht auf die Basispriorität dieses Threads aus.
Rückgabewert
KeSetBasePriorityThread gibt die vorherige Basisprioritätsstufe des angegebenen Threads zurück. Die vorherige Basisprioritätsstufe wird als Unterschied zwischen der alten Basispriorität des angegebenen Threads und der Basispriorität des Threadprozesses definiert.
Spezielle Rückgabewerte:
Diese Funktion gibt 0 zurück, wenn versucht wird, die Priorität eines Leerlaufthreads (Threads im anfänglichen Kernelprozess) zu ändern. Die Funktion lässt keine Änderung der Threadprioritäten im Leerlauf zu.
Bei Sättigungsthreads gibt
((HIGH_PRIORITY + 1) / 2) * saturation_valuediese Funktion anstelle der einfachen Prioritätsdifferenz zurück, wobei saturation_value +1 oder -1 ist, je nachdem, ob der Thread mit hoher oder niedriger Priorität gesättigt wurde.
Bemerkungen
Die neue Basispriorität wird berechnet, indem die angegebene Inkrementierunghinzugefügt wird, die ein negativer Wert sein kann, zur Basispriorität des angegebenen Threadprozesses. Der resultierende Wert wird als Basispriorität des angegebenen Threads gespeichert.
Treiber, die gerätededizierte Threads mit Attributen mit variabler Priorität einrichten, können diese Routine aufrufen, um die Priorität eines solchen Threads relativ zum Systemprozess festzulegen, in dem der Thread erstellt wird.
Die neue Basispriorität ist auf die Prioritätsklasse des prozesses des angegebenen Threads beschränkt. Daher darf die Basispriorität nicht von einer variablen Prioritätsklasse auf eine Echtzeitprioritätsklasse oder umgekehrt übertragen werden.
KeSetBasePriorityThread ist ein relativ kostspieliger Vorgang, der sparsam verwendet werden sollte. Vermeiden Sie häufige Aufrufe dieser Funktion, da wiederholte Prioritätsänderungen (z. B. einmal pro Minute) die Systemleistung erheblich beeinträchtigen und verhindern können, dass der Scheduler effizient funktioniert. Verwenden Sie diese Funktion nur, wenn dauerhafte Prioritätsänderungen erforderlich sind, nicht für temporäre Anpassungen oder regelmäßige Updates.
Anforderungen
| Anforderung | Wert |
|---|---|
| mindestens unterstützte Client- | Windows 2000 |
| Zielplattform- | Universal |
| Header- | ntddk.h (include Ntddk.h) |
| Library | NtosKrnl.lib |
| DLL- | NtosKrnl.exe |
| IRQL- | PASSIVE_LEVEL |