Question

Une configuration supplémentaire est-elle nécessaire avant de pouvoir définir les priorités de thread dans un service Windows?

Dans mon service, j'ai quelques fils qui appellent chacun la fonction CreateProcess () pour lancer une application externe. Je souhaite ajuster les priorités de thread (ou de processus) sur normal ou inférieur , en fonction de certains autres facteurs.

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

J'ai également essayé de définir la priorité des processus à l'aide de la fonction SetPriorityClass () , qui échoue également.

Le service est connecté en tant qu'utilisateur local.

Était-ce utile?

La solution

Peut-être que vous n’avez pas les bons droits d’accès? MSDN sur SetThreadPriority dit:

  

hThread [in] Un handle vers le thread   dont la valeur de priorité doit être définie.

     

La poignée doit avoir le   THREAD_SET_INFORMATION ou   Accès THREAD_SET_LIMITED_INFORMATION   droite. Pour plus d'informations, voir   Sécurité des threads et droits d'accès.

     

Windows Server 2003 et Windows   XP / 2000: La poignée doit avoir le   THREAD_SET_INFORMATION droit d'accès.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top