ZwSetInformationThread-Funktion (ntddk.h)

Die ZwSetInformationThread-Routine legt die Priorität eines Threads fest.

Syntax

NTSYSAPI NTSTATUS ZwSetInformationThread(
  [in] HANDLE          ThreadHandle,
  [in] THREADINFOCLASS ThreadInformationClass,
  [in] PVOID           ThreadInformation,
  [in] ULONG           ThreadInformationLength
);

Parameter

[in] ThreadHandle

Handle für das Threadobjekt. Um einen neuen Thread zu erstellen und ein Handle dafür zu erhalten, rufen Sie PsCreateSystemThread auf. Verwenden Sie das Makro ZwCurrentThread , um den aktuellen Thread anzugeben.

[in] ThreadInformationClass

Einer der systemdefinierten Werte in der THREADINFOCLASS-Enumeration (siehe ntddk.h), ThreadPriority, ThreadBasePriority, ThreadPagePriority oder ThreadPowerThrottlingState.

[in] ThreadInformation

Zeiger auf eine Variable, die die festzulegenden Informationen angibt.

Wenn ThreadInformationClassden Wert ThreadPriority aufweist, muss dieser Wert LOW_PRIORITY und <= HIGH_PRIORITY sein>.

Wenn ThreadInformationClassthreadBasePriority ist, muss dieser Wert innerhalb des gültigen Basisprioritätsbereichs des Systems und der ursprünglichen Prioritätsklasse für den angegebenen Thread liegen. Das heißt, wenn die Prioritätsklasse eines Threads variabel ist, kann die Basispriorität dieses Threads nicht auf einen Echtzeitprioritätswert zurückgesetzt werden und umgekehrt.

Wenn ThreadInformationClassthreadPagePriority ist, ist dieser Wert ein Zeiger auf eine PAGE_PRIORITY_INFORMATION-Struktur , siehe ntddk.h. Der PagePriority-Memberwert muss einer dieser Werte sein.

Wenn ThreadInformationClassthreadPowerThrottlingState ist, ist dieser Wert ein Zeiger auf eine POWER_THROTTLING_THREAD_STATE-Struktur , siehe ntddk.h. Der PagePriority-Memberwert muss einer dieser Werte sein.

Wert Bedeutung
MEMORY_PRIORITY_VERY_LOW Sehr niedrige Arbeitsspeicherpriorität.
MEMORY_PRIORITY_LOW Niedrige Arbeitsspeicherpriorität.
MEMORY_PRIORITY_MEDIUM Mittlere Arbeitsspeicherpriorität.
MEMORY_PRIORITY_BELOW_NORMAL Unterhalb der normalen Speicherpriorität.
MEMORY_PRIORITY_NORMAL Normale Speicherpriorität. Dies ist die Standardpriorität für alle Threads und Prozesse im System.

[in] ThreadInformationLength

Die Größe von ThreadInformation in Bytes.

Rückgabewert

ZwSetInformationThread gibt STATUS_SUCCESS bei Erfolg oder den entsprechenden NTSTATUS-Fehlercode bei Einem Fehler zurück. Mögliche Fehlercodes sind STATUS_INFO_LENGTH_MISMATCH oder STATUS_INVALID_PARAMETER.

Hinweise

ZwSetInformationThread kann von Treibern höherer Ebene aufgerufen werden, um die Priorität eines Threads festzulegen, für den sie über ein Handle verfügen.

Der Aufrufer muss über THREAD_SET_INFORMATION Zugriffsrechte für den angegebenen Thread verfügen, um diese Routine aufrufen zu können.

In der Regel rufen Geräte- und Zwischentreiber, die vom Treiber erstellte Threads einrichten , KeSetBasePriorityThread oder KeSetPriorityThread aus ihren vom Treiber erstellten Threads auf, anstatt ZwSetInformationThread aufzurufen. Ein Treiber kann jedoch ZwSetInformationThread aufrufen, um die Priorität eines vom Treiber erstellten Threads zu erhöhen, bevor dieser Thread ausgeführt wird.

Kernelmodustreiber können die ZwSetInformationThread-Funktion mit ThreadPagePriority aufrufen, um die Seitenpriorität eines Threads anzugeben.

Um die Systemleistung zu verbessern, sollten Treiber die Funktion mit ThreadPagePriority verwenden, um die Seitenpriorität von Threads zu senken, die Hintergrundvorgänge ausführen oder auf Dateien und Daten zugreifen, auf die nicht bald wieder zugegriffen werden soll. Beispielsweise kann eine Antischadsoftwareanwendung die Priorität von Threads verringern, die an der Überprüfung von Dateien beteiligt sind.

Um die Seitenpriorität für einen Thread zu bestimmen, rufen Sie ZwQueryInformationThread auf.

Wenn der Aufruf dieser Funktion im Benutzermodus erfolgt, sollten Sie den Namen NtSetInformationThread anstelle von ZwSetInformationThread verwenden.

Bei Aufrufen von Kernelmodustreibern können sich die NtXxx - und ZwXxx-Versionen einer Windows Native System Services-Routine anders verhalten, wie sie Eingabeparameter verarbeiten und interpretieren. Weitere Informationen zur Beziehung zwischen den Nt Xxx- und ZwXxx-Versionen einer Routine finden Sie unter Verwenden von Nt- und Zw-Versionen der systemeigenen Systemdienstroutinen.

Anforderungen

Anforderung Wert
Zielplattform Universell
Header ntddk.h (include Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI-Complianceregeln HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

Weitere Informationen

KeSetBasePriorityThread

KeSetPriorityThread

PsCreateSystemThread

Verwenden von Nt- und Zw-Versionen der Systemdienstroutinen