Установка приоритета потока в сервисе не имеет никакого эффекта [закрыто]

StackOverflow https://stackoverflow.com/questions/239160

Вопрос

Нужна ли дополнительная настройка, чтобы я мог установить приоритеты потоков в службе 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 право доступа.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top