Функция GetPriorityClass (processthreadsapi.h)

Извлекает класс приоритета для указанного процесса. Это значение вместе со значением приоритета каждого потока процесса определяет базовый уровень приоритета каждого потока.

Синтаксис

DWORD GetPriorityClass(
  [in] HANDLE hProcess
);

Параметры

[in] hProcess

Дескриптор процесса.

Дескриптор должен иметь право доступа PROCESS_QUERY_INFORMATION или PROCESS_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
Процесс, выполняющий критически важные по времени задачи, которые необходимо выполнить немедленно, чтобы он выполнялся правильно. Потоки процесса класса с высоким приоритетом вытесняют потоки обычных или неактивных процессов класса приоритета. Примером является список задач, который должен быстро реагировать на вызов пользователем независимо от нагрузки на операционную систему. Будьте внимательны при использовании класса с высоким приоритетом, так как высокоприоритетное приложение, привязанное к ЦП, может использовать почти все доступные циклы.
IDLE_PRIORITY_CLASS
0x00000040
Процесс, потоки которого выполняются только в том случае, если система простаивает и вытесняется потоками любого процесса, выполняющегося в классе с более высоким приоритетом. Примером является заставка. Класс неактивного приоритета наследуется дочерними процессами.
NORMAL_PRIORITY_CLASS
0x00000020
Процесс без особых потребностей в планировании.
REALTIME_PRIORITY_CLASS
0x00000100
Процесс, имеющий наивысший возможный приоритет. Потоки процесса класса приоритета в режиме реального времени вытесняют потоки всех остальных процессов, включая процессы операционной системы, выполняющие важные задачи. Например, процесс в режиме реального времени, который выполняется более чем за очень короткий интервал, может привести к тому, что кэши диска не будут очищаться или мышь перестает отвечать на запросы.

Комментарии

Каждый поток имеет базовый уровень приоритета, определяемый значением приоритета потока и классом приоритета его процесса. Операционная система использует базовый уровень приоритета всех исполняемых потоков, чтобы определить, какой поток получает следующий срез времени ЦП. Потоки планируются с циклическим перебором на каждом уровне приоритета, и только при отсутствии исполняемых потоков на более высоком уровне будет выполняться планирование потоков на более низком уровне.

Таблицу с базовыми уровнями приоритета для каждой комбинации класса приоритета и значения приоритета потока см. в разделе Планирование приоритетов.

Класс priority поддерживается руководителем, поэтому все процессы имеют класс приоритета, который можно запрашивать.

Примеры

Пример см. в разделе Создание моментального снимка и просмотр процессов.

Требования

   
Минимальная версия клиента Windows XP [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2003 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header processthreadsapi.h (включая Windows.h в Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

GetThreadPriority

Функции процессов и потоков

Процессы

Приоритеты планирования

SetPriorityClass

SetThreadPriority