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

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

要求

要求
目标平台 通用
标头 ntddk.h (包括 Ntddk.h、Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 符合性规则 HwStorPortProhibitedDDI (storport) PowerIrpDDis (wdm)

另请参阅

KeSetBasePriorityThread

KeSetPriorityThread

PsCreateSystemThread

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