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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top