Функция 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 |
См. также раздел
Использование версий NT и Zw собственных процедур системных служб.