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