Definir uma prioridade de thread em um serviço não tem efeito [fechado]
-
04-07-2019 - |
Pergunta
Existe alguma configuração adicional necessária antes que eu possa definir as prioridades de rosca em um serviço do Windows?
Em meu serviço, eu tenho alguns tópicos que cada chamada a função CreateProcess()
para lançar uma aplicação externa. Eu gostaria de ajustar thread (ou processo) prioridades para normal
ou lower
, dependendo de alguns outros fatores.
O problema é que a função SetThreadPriority()
falha com um erro 6 (identificador inválido?). Eu estou passando em uma alça obtida a partir PROCESS_INFORMATION::hThread
(depois de chamar o CreateProcess()
é claro), então eu acho que o identificador deve ser válido.
Eu também tentei definir a prioridade sobre os processos que utilizam a função SetPriorityClass()
, que também falha.
O serviço é registrado como um usuário local.
Solução
Talvez você não tem os direitos de acesso corretos? MSDN em SetThreadPriority diz:
hThread [no] Um identificador para o segmento cujo valor de prioridade é para ser definido.
A alça deve ter a THREAD_SET_INFORMATION ou acesso THREAD_SET_LIMITED_INFORMATION certo. Para mais informações, veja Fio de segurança e direitos de acesso.
Windows Server 2003 e Windows XP / 2000: O punho deve ter a Acesso THREAD_SET_INFORMATION direita.