Функция 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 , чтобы повысить приоритет созданного драйвером потока перед выполнением этого потока.

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

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

Примечание

Если вызов этой функции происходит в режиме ядра, следует использовать имя ZwSetInformationThread вместо NtSetInformationThread.

Для вызовов из драйверов режима ядра версии NtXxx и ZwXxx подпрограммы собственных системных служб Windows могут вести себя по-разному, так как они обрабатывают и интерпретируют входные параметры. Дополнительные сведения о связи между версиями подпрограммы NtXxx и ZwXxx см. в разделе Использование версий Nt и Zw собственных системных служб.

Требования

Требование Значение
Минимальная версия клиента Windows 2000
Целевая платформа Универсальное
Верхняя часть ntifs.h (включая Ntddk.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Правила соответствия DDI HwStorPortProhibitedDIs, PowerIrpDDis

См. также раздел

KeSetBasePriorityThread

KeSetPriorityThread

PsCreateSystemThread

Использование версий NT и Zw собственных процедур системных служб.