getPriorityClass 函数 (processthreadsapi.h)

检索指定进程的优先级类。 此值与进程的每个线程的优先级值一起来确定每个线程的基本优先级别。

语法

DWORD GetPriorityClass(
  [in] HANDLE hProcess
);

parameters

[in] hProcess

进程的句柄。

句柄必须具有 PROCESS_QUERY_INFORMATIONPROCESS_QUERY_LIMITED_INFORMATION 访问权限。 有关详细信息,请参阅 进程安全和访问权限

Windows Server 2003 和 Windows XP: 句柄必须具有 PROCESS_QUERY_INFORMATION 访问权限。

返回值

如果函数成功,则返回值是指定进程的优先级类。

如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。

进程的优先级类是以下值之一。

返回代码/值 说明
ABOVE_NORMAL_PRIORITY_CLASS
0x00008000
优先级高于 NORMAL_PRIORITY_CLASS 但低于 HIGH_PRIORITY_CLASS的进程。
BELOW_NORMAL_PRIORITY_CLASS
0x00004000
优先级高于 IDLE_PRIORITY_CLASS 但低于 NORMAL_PRIORITY_CLASS的进程。
HIGH_PRIORITY_CLASS
0x00000080
执行时间关键型任务的进程,必须立即执行这些任务才能正常运行。 高优先级类进程的线程会抢占普通或空闲优先级类进程的线程。 例如,任务列表,无论操作系统上的负载如何,它都必须在用户调用时快速响应。 使用高优先级类时要格外小心,因为高优先级类的 CPU 绑定应用程序几乎可以使用所有可用的周期。
IDLE_PRIORITY_CLASS
0x00000040
进程,其线程仅在系统空闲时运行,并且被在较高优先级类中运行的任何进程的线程抢占。 例如,屏幕保护程序。 此优先级类由子进程继承。
NORMAL_PRIORITY_CLASS
0x00000020
没有特殊计划需求的流程。
REALTIME_PRIORITY_CLASS
0x00000100
具有最高优先级的进程。 实时优先级类进程的线程会抢占所有其他进程的线程,包括执行重要任务的操作系统进程。 例如,执行超过非常短的时间间隔的实时进程可能会导致磁盘缓存无法刷新或导致鼠标无响应。

注解

每个线程都有由线程的优先级值及其进程的优先级类确定的基本优先级。 操作系统使用所有可执行线程的基本优先级级别来确定哪个线程获取下一段 CPU 时间。 线程在每个优先级级别以轮循机制方式进行计划,只有在较高级别没有可执行线程时,才会在较低级别调度线程。

有关显示优先级类和线程优先级值的每种组合的基本优先级的表,请参阅 计划优先级

优先级类由管理人员维护,因此所有流程都有一个可以查询的优先级类。

示例

有关示例,请参阅 拍摄快照和查看进程

要求

   
最低受支持的客户端 Windows XP [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2003 [桌面应用 | UWP 应用]
目标平台 Windows
标头 processthreadsapi.h (包括 Windows Server 2003、Windows Vista、Windows 7、Windows Server 2008 Windows Server 2008 R2)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

GetThreadPriority

进程和线程函数

进程

计划优先级

SetPriorityClass

SetThreadPriority