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