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) 、 ThreadPriority、 ThreadBasePriority、 ThreadPagePriority 或 ThreadPowerThrottlingState。
[in] ThreadInformation
指向变量的指针,该变量指定要设置的信息。
如果 ThreadInformationClass 为 ThreadPriority,则此值必须 > LOW_PRIORITY且 <= HIGH_PRIORITY。
如果 ThreadInformationClass 为 ThreadBasePriority,则此值必须位于系统的有效基优先级范围和给定线程的原始优先级类内。 也就是说,如果线程的优先级类可变,则无法将该线程的基本优先级重置为实时优先级值,反之亦然。
如果 ThreadInformationClass 为 ThreadPagePriority,则此值是指向 PAGE_PRIORITY_INFORMATION 结构的指针,请参阅 ntddk.h。 PagePriority 成员值必须是其中一个值。
如果 ThreadInformationClass 为 ThreadPowerThrottlingState,则此值是指向 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访问权限才能调用此例程。
通常,设置驱动程序创建的线程的设备和中间驱动程序从其驱动程序创建的线程调用 KeSetBasePriorityThread 或 KeSetPriorityThread ,而不是调用 NtSetInformationThread。 但是,驱动程序可以调用 NtSetInformationThread ,以在驱动程序创建的线程运行之前提升该线程的优先级。
内核模式驱动程序可以使用 ThreadPagePriority 调用 NtSetInformationThread 函数来指定线程的页面优先级。
为了帮助提高系统性能,驱动程序应将 函数与 ThreadPagePriority 配合使用,以降低执行后台操作或访问预期不会很快再次访问的文件和数据的线程的页面优先级。 例如,反恶意软件应用程序可能会降低扫描文件所涉及的线程的优先级。
注意
如果在内核模式下调用此函数,则应使用名称 ZwSetInformationThread 而不是 NtSetInformationThread。
对于来自内核模式驱动程序的调用,Windows Native System Services 例程的 NtXxx 和 ZwXxx 版本在处理和解释输入参数的方式上的行为可能有所不同。 有关例程的 NtXxx 和 ZwXxx 版本之间的关系的详细信息,请参阅 使用本机系统服务例程的 Nt 和 Zw 版本。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 |
目标平台 | 通用 |
标头 | ntifs.h (包括 Ntddk.h、Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI 符合性规则 | HwStorPortProhibitedDDI、PowerIrpDDis |