ZwSetInformationThread 函数 (ntddk.h)

ZwSetInformationThread 例程设置线程的优先级。

语法

NTSYSAPI NTSTATUS ZwSetInformationThread(
  [in] HANDLE          ThreadHandle,
  [in] THREADINFOCLASS ThreadInformationClass,
  [in] PVOID           ThreadInformation,
  [in] ULONG           ThreadInformationLength
);

参数

[in] ThreadHandle

线程对象的句柄。 若要创建新线程并获取句柄,请调用 PsCreateSystemThread。 若要指定当前线程,请使用 ZwCurrentThread 宏。

[in] ThreadInformationClass

THREADINFOCLASS 枚举中系统定义的值之一(见 ntddk.h)、ThreadPriorityThreadBasePriorityThreadPagePriorityThreadPowerThrottlingState

[in] ThreadInformation

指向指定要设置信息的变量的指针。

如果 ThreadInformationClassThreadPriority,则此值必须 > LOW_PRIORITY 且 <= HIGH_PRIORITY。

如果 ThreadInformationClassThreadBasePriority,则此值必须位于系统的有效基优先级范围和给定线程的原始优先级类内。 也就是说,如果线程的优先级类是可变的,则线程的基本优先级不能重置为实时优先级值,反之亦然。

如果 ThreadInformationClassThreadPagePriority,则此值是指向 PAGE_PRIORITY_INFORMATION 结构的指针,请参阅 ntddk.h。 PagePriority 成员值必须是其中一个值。

如果 ThreadInformationClassThreadPowerThrottlingState,则此值是指向 POWER_THROTTLING_THREAD_STATE 结构的指针,请参阅 ntddk.h。 PagePriority 成员值必须是其中一个值。

价值 意义
MEMORY_PRIORITY_VERY_LOW 内存优先级非常低。
MEMORY_PRIORITY_LOW 内存优先级低。
MEMORY_PRIORITY_MEDIUM 中等内存优先级。
MEMORY_PRIORITY_BELOW_NORMAL 低于正常内存优先级。
MEMORY_PRIORITY_NORMAL 正常内存优先级。 这是系统上所有线程和进程的默认优先级。

[in] ThreadInformationLength

ThreadInformation的大小(以字节为单位)。

返回值

ZwSetInformationThread 在成功时返回STATUS_SUCCESS,或者在失败时返回相应的 NTSTATUS 错误代码。 可能的错误代码包括STATUS_INFO_LENGTH_MISMATCH或STATUS_INVALID_PARAMETER。

言论

ZwSetInformationThread 可由高级驱动程序调用,以设置其具有句柄的线程的优先级。

调用方必须具有给定线程THREAD_SET_INFORMATION访问权限才能调用此例程。

通常,设置驱动程序创建的线程的设备和中间驱动程序从驱动程序创建的线程调用 KeSetBasePriorityThreadKeSetPriorityThread,而不是从其驱动程序创建的线程调用 ZwSetInformationThread。 但是,驱动程序可以调用 ZwSetInformationThread,以在该线程运行之前提升驱动程序创建的线程的优先级。

内核模式驱动程序可以使用 ThreadPagePriority 调用 ZwSetInformationThread 函数来指定线程的页面优先级。

为了帮助提高系统性能,驱动程序应将函数与 ThreadPagePriority 配合使用,以降低执行后台作的线程的页面优先级,或者访问预计不久将再次访问的文件和数据。 例如,反恶意软件应用程序可能会降低扫描文件所涉及的线程的优先级。

若要确定线程的页面优先级,请调用 ZwQueryInformationThread

如果在用户模式下调用此函数,则应使用名称 NtSetInformationThread 而不是 ZwSetInformationThread

对于内核模式驱动程序的调用,NtXxxZwXxx 版本的 Windows 本机系统服务例程的行为方式可能以不同的方式处理和解释输入参数。 有关 NtXxxZwXxx 例程之间的关系的详细信息,请参阅 使用 Nt 和 Zw 版本的本机系统服务例程

要求

要求 价值
目标平台 普遍
标头 ntddk.h (包括 Ntddk.h、 Ntifs.h)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 符合性规则 HwStorPortProhibitedDIS(storport)PowerIrpDDis(wdm)

另请参阅

KeSetBasePriorityThread

KeSetPriorityThread

PsCreateSystemThread

使用本机系统服务例程的 Nt 和 Zw 版本