Поделиться через


Функция KeSetBasePriorityThread (ntddk.h)

Программа KeSetBasePriorityThread задает приоритет времени выполнения относительно текущего процесса для заданного потока.

Синтаксис

LONG KeSetBasePriorityThread(
  [in, out] PKTHREAD Thread,
  [in]      LONG     Increment
);

Параметры

[in, out] Thread

Указатель на объект диспетчера типа KTHREAD.

[in] Increment

Указывает значение, которое необходимо добавить в базовый приоритет процесса для thread. Это значение может быть положительным или отрицательным.

Эффективный диапазон зависит от класса приоритета процесса:

  • Для процессов класса приоритета переменной: результирующий приоритет должен оставаться в пределах 1 до (LOW_REALTIME_PRIORITY – 1)
  • Для процессов класса приоритета в режиме реального времени: результирующий приоритет должен оставаться в пределах LOW_REALTIME_PRIORITYHIGH_PRIORITY

Если абсолютное значение приращения больше или равно (HIGH_PRIORITY + 1) / 2, происходит насыщенность приоритета, то есть последующие изменения базового приоритета родительского процесса не повлияют на базовый приоритет этого потока.

Возвращаемое значение

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

Специальные возвращаемые значения:

  • Эта функция возвращает значение 0 при попытке изменить приоритет потока простоя (потоки в начальном процессе ядра). Функция не позволяет изменять приоритеты потока простоя.

  • Для насыщенных потоков эта функция возвращает ((HIGH_PRIORITY + 1) / 2) * saturation_value не простое различие приоритетов, где saturation_value равно +1 или -1 в зависимости от того, был ли поток насыщенным при высоком или низком приоритете.

Замечания

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

Драйверы, которые настраивают выделенные устройствами потоки с атрибутами приоритета переменной, могут вызывать эту подпрограмму, чтобы задать такой приоритет потока относительно системного процесса, в котором создается поток.

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

KeSetBasePriorityThread является относительно дорогой операцией, которая должна использоваться смешно. Избегайте частых вызовов этой функции, так как повторяющиеся изменения приоритета (например, один раз в минуту) могут значительно повлиять на производительность системы и предотвратить эффективную работу планировщика. Используйте эту функцию только в том случае, если требуются постоянные изменения приоритета, а не для временных изменений или периодических обновлений.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 2000
целевая платформа Всеобщий
заголовка ntddk.h (include Ntddk.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

См. также

KeGetCurrentThread

KeQueryPriorityThread

KeSetPriorityThread