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) |