Требуется ли дополнительная настройка, прежде чем я смогу установить приоритеты потоков в службе Windows?
В моем сервисе есть несколько потоков, каждый из которых вызывает функцию CreateProcess() для запуска внешнего приложения. Я хотел бы настроить приоритеты потоков (или процессов) на normal или lower, в зависимости от некоторых других факторов.
Проблема в том, что функция SetThreadPriority() не работает с ошибкой 6 (недопустимый дескриптор?). Я передаю дескриптор, полученный от PROCESS_INFORMATION::hThread (конечно, после вызова CreateProcess()), поэтому я думаю, что дескриптор должен действителен.
Я также попытался установить приоритет процессов с помощью функции SetPriorityClass(), но это тоже не удалось.
Служба вошла в систему как локальный пользователь.





Может у вас нет нужных прав доступа? MSDN на SetThreadPriority говорит:
hThread [in] A handle to the thread whose priority value is to be set.
The handle must have the THREAD_SET_INFORMATION or THREAD_SET_LIMITED_INFORMATION access right. For more information, see Thread Security and Access Rights.
Windows Server 2003 and Windows XP/2000: The handle must have the THREAD_SET_INFORMATION access right.
Возможно. Я пытаюсь передать SECURITY_DESCRIPTOR в CreateProcess () в надежде, что я смогу получить полный доступ, но, похоже, это не имеет никакого эффекта, так как я все еще получаю ошибку 6 и приоритеты не меняются. Возможно, я что-то делаю не так, задавая это.