Установка приоритета потока в сервисе не имеет никакого эффекта [закрыто]
-
04-07-2019 - |
Вопрос
Нужна ли дополнительная настройка, чтобы я мог установить приоритеты потоков в службе Windows? Р>
В моем сервисе у меня есть несколько потоков, каждый из которых вызывает функцию CreateProcess ()
для запуска внешнего приложения. Я хотел бы настроить приоритеты потоков (или процессов) на normal
или lower
, в зависимости от некоторых других факторов.
Проблема в том, что функция SetThreadPriority ()
завершается с ошибкой 6 (неверный дескриптор?). Я передаю дескриптор, полученный из PROCESS_INFORMATION :: hThread
(после вызова CreateProcess ()
, конечно), поэтому я думаю, что дескриптор должен быть действительным.
Я также попытался установить приоритет процессов с помощью функции SetPriorityClass ()
, которая также не работает.
Сервис зарегистрирован как локальный пользователь.
Решение
Может быть, у вас нет правильных прав доступа? MSDN в SetThreadPriority говорит:
hThread [in] Дескриптор потока чье значение приоритета должно быть установлено.
Ручка должна иметь THREAD_SET_INFORMATION или THREAD_SET_LIMITED_INFORMATION доступ право. Для получения дополнительной информации см. Защита потоков и права доступа.
Windows Server 2003 и Windows XP / 2000: ручка должна иметь THREAD_SET_INFORMATION право доступа.