NTSTATUS
ZwSetInformationThread(
IN HANDLE ThreadHandle,
IN THREADINFOCLASS ThreadInformationClass,
IN PVOID ThreadInformation,
IN ULONG ThreadInformationLength
);
ZwSetInformationThread can be called to set the priority of a thread for which the caller has a handle.
Parameters
ThreadHandle
Is the open handle for a thread.
ThreadInformationClass
Is one of the system-defined values ThreadPriority or ThreadBasePriority.
ThreadInformation
Points to a variable specifying the information to be set. If ThreadInformationClass is ThreadPriority, this value must be > LOW_PRIORITY and <= HIGH_PRIORITY. If ThreadInformationClass is ThreadBasePriority, this value must fall within the system’s valid base priority range and the original priority class for the given thread: that is, if a thread’s priority class is variable, that thread’s base priority cannot be reset to a real-time priority value and vice versa.
ThreadInformationLength
Is the size in bytes of ThreadInformation, which must be at least sizeof(KPRIORITY).
Return Value
ZwSetInformationThread returns STATUS_SUCCESS or an error status, such as STATUS_INFO_LENGTH_MISMATCH or STATUS_INVALID_PARAMETER.
Comments
ZwSetInformationThread can be called by higher-level drivers to set the priority of a thread for which they have a handle.
The caller must have THREAD_SET_INFORMATION access rights for the given thread in order to call this routine.
Usually, device and intermediate drivers that set up driver-created threads call KeSetBasePriorityThread or KeSetPriorityThread from their driver-created threads, rather than ZwSetInformationThread. However, a driver can call ZwSetInformationThread to raise the priority of a driver-created thread before that thread is run.
Callers of ZwSetInformationThread must be running at IRQL PASSIVE_LEVEL.
See Also
KeSetBasePriorityThread, KeSetPriorityThread, PsCreateSystemThread