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