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

Как правило, драйверы устройств и промежуточных параметров, которые настраивают потоки, созданные драйвером, вызывают KeSetBasePriorityThread или KeSetPriorityThread из потоков, созданных драйвером, вместо вызова ZwSetInformationThread. Однако драйвер может вызвать ZwSetInformationThread , чтобы повысить приоритет потока, созданного драйвером, перед выполнением этого потока.

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

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

Чтобы определить приоритет страницы для потока, вызовите ZwQueryInformationThread.

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

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

Требования

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

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

KeSetBasePriorityThread

KeSetPriorityThread

PsCreateSystemThread

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