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


Функция 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

Указатель на переменную, указывающую сведения, которые нужно задать.

Если ThreadInformationClassThreadPriority, это значение должно быть > LOW_PRIORITY и <= HIGH_PRIORITY.

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

Если ThreadInformationClassThreadPagePriority, это значение является указателем на структуру PAGE_PRIORITY_INFORMATION, см. ntddk.h. Значение элемента PagePriority должно быть одним из этих значений.

Если ThreadInformationClassThreadPowerThrottlingState, это значение является указателем на структуру 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 Native System Services могут вести себя по-разному в том, как они обрабатывают и интерпретируют входные параметры. Дополнительные сведения о связи между NtXxx и ZwXXX подпрограммы см. в разделе Using Nt and Zw Versions of the Native System Services Routines..

Требования

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

См. также

KeSetBasePriorityThread

KeSetPriorityThread

PsCreateSystemThread

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