2

Une configuration supplémentaire est-elle nécessaire avant de pouvoir définir les priorités de thread dans un service Windows?La définition d'une priorité de thread dans un service n'a aucun effet.

Dans mon service, j'ai quelques threads qui appellent chacun la fonction CreateProcess() pour lancer une application externe. Je voudrais ajuster les priorités de thread (ou de processus) à normal ou lower, en fonction d'autres facteurs.

Le problème est que la fonction SetThreadPriority() échoue avec une erreur 6 (handle invalide?). Je passe dans un handle obtenu à partir de PROCESS_INFORMATION::hThread (après avoir appelé le CreateProcess() bien sûr), donc je pense que le handle devrait être valide.

J'ai également essayé de définir la priorité sur les processus en utilisant la fonction SetPriorityClass(), qui échoue également.

Le service a ouvert une session en tant qu'utilisateur local.

Répondre

2

Peut-être que vous n'avez pas les droits d'accès corrects? MSDN on SetThreadPriority dit:

hThread [en] Une poignée au fil dont la valeur priorité doit être définie.

Le manche doit avoir la THREAD_SET_INFORMATION ou THREAD_SET_LIMITED_INFORMATION accès droit. Pour plus d'informations, voir Sécurité des threads et droits d'accès. Windows Server 2003 et Windows XP/2000: Le handle doit avoir le droit d'accès THREAD_SET_INFORMATION.

+0

C'est possible. J'essaye de passer dans un SECURITY_DESCRIPTOR à CreateProcess() dans l'espoir que je puisse obtenir un accès complet, mais cela ne semble pas avoir d'effet, car j'obtiens toujours une erreur 6 et les priorités ne sont pas changées. Je peux faire quelque chose de mal en réglant cela. – dennisV

+0

Oui, c'était ça. Merci! – dennisV

Questions connexes