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
Behandeln sie das Threadobjekt. Rufen Sie PsCreateSystemThreadauf, um einen neuen Thread zu erstellen und einen Handle zu erhalten. Um den aktuellen Thread anzugeben, verwenden Sie das ZwCurrentThread Makro.
[in] ThreadInformationClass
Einer der systemdefinierten Werte in der THREADINFOCLASS-Aufzählung (siehe ntddk.h), ThreadPriority, ThreadBasePriority, ThreadPagePriorityoder ThreadPowerThrottlingState.
[in] ThreadInformation
Zeigen Sie auf eine Variable, die die festzulegenden Informationen angibt.
Wenn ThreadInformationClass-ThreadPriority-ist, muss dieser Wert > LOW_PRIORITY und <= HIGH_PRIORITY sein.
Wenn ThreadInformationClass-ThreadBasePriority-ist, muss dieser Wert in den gültigen Basisprioritätsbereich des Systems und die ursprüngliche Prioritätsklasse für den angegebenen Thread fallen. Das heißt, wenn die Prioritätsklasse eines Threads variable ist, kann die Basispriorität dieses Threads nicht auf einen Echtzeitprioritätswert zurückgesetzt werden und umgekehrt.
Wenn ThreadInformationClass-ThreadPagePriority-ist, ist dieser Wert ein Zeiger auf eine PAGE_PRIORITY_INFORMATION-Struktur, siehe ntddk.h. Der PagePriority- Memberwert muss einer dieser Werte sein.
Wenn ThreadInformationClass-ThreadPowerThrottlingStateist, 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 geringe Arbeitsspeicherpriorität. |
MEMORY_PRIORITY_LOW | Geringe Arbeitsspeicherpriorität. |
MEMORY_PRIORITY_MEDIUM | Mittlere Speicherpriorität. |
MEMORY_PRIORITY_BELOW_NORMAL | Unter normaler 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 Byte.
Rückgabewert
ZwSetInformationThread- gibt STATUS_SUCCESS bei Erfolg oder den entsprechenden NTSTATUS-Fehlercode beim Fehler zurück. Mögliche Fehlercodes sind STATUS_INFO_LENGTH_MISMATCH oder STATUS_INVALID_PARAMETER.
Bemerkungen
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 aufzurufen.
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 ZwSetInformationThreadaufzurufen. 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 in Kürze nicht mehr 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 ZwQueryInformationThreadauf.
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 behandeln und interpretieren. Weitere Informationen zur Beziehung zwischen den NtXxx und ZwXxx- Versionen einer Routine finden Sie unter Using Nt and Zw Versions of the Native System Services Routines.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Universal |
Header- | ntddk.h (enthalten Ntddk.h, Ntifs.h) |
Library | NtosKrnl.lib |
DLL- | NtosKrnl.exe |
IRQL- | PASSIVE_LEVEL |
DDI-Complianceregeln | HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm) |
Siehe auch
Verwenden von Nt- und Zw-Versionen der systemeigenen Systemdienste-Routinen