ZwSetInformationThread

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