NtSetInformationThread 函数 (ntifs.h)

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

语法

__kernel_entry NTSYSCALLAPI NTSTATUS NtSetInformationThread(
  [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 (1) 内存优先级非常低。
MEMORY_PRIORITY_LOW (2) 内存优先级低。
MEMORY_PRIORITY_MEDIUM (3) 中等内存优先级。
MEMORY_PRIORITY_BELOW_NORMAL (4) 低于正常内存优先级。
MEMORY_PRIORITY_NORMAL (5) 正常内存优先级。 这是系统上所有线程和进程的默认优先级。

[in] ThreadInformationLength

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

返回值

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

言论

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

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

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

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

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

注意

如果对此函数的调用在内核模式下发生,则应使用名称 ZwSetInformationThread 而不是 NtSetInformationThread

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

要求

要求 价值
最低支持的客户端 Windows 2000
目标平台 普遍
标头 ntifs.h(包括 Ntddk.h、Ntifs.h)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 符合性规则 HwStorPortProhibitedDDI、PowerIrpDDis

另请参阅

KeSetBasePriorityThread

KeSetPriorityThread

PsCreateSystemThread

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