在服务中设置线程优先级无效

时间:2008-10-27 05:41:27

标签: multithreading winapi process windows-services thread-priority

在我可以在Windows服务中设置线程优先级之前是否需要一些其他配置?

在我的服务中,我有一些线程,每个线程都调用CreateProcess()函数来启动外部应用程序。我想根据其他一些因素将线程(或流程)优先级调整为normallower

问题是SetThreadPriority()函数失败并出现错误6(句柄无效?)。我正在传递从PROCESS_INFORMATION::hThread获得的句柄(当然在调用CreateProcess()之后),所以我认为句柄有效。

我也尝试使用SetPriorityClass()函数设置进程的优先级,这也失败了。

该服务以本地用户身份登录。

1 个答案:

答案 0 :(得分:2)

也许您没有正确的访问权限? MSDN on SetThreadPriority说:

  

hThread [in]线程的句柄   其优先级值将被设置。

     

手柄必须有   THREAD_SET_INFORMATION或   THREAD_SET_LIMITED_INFORMATION访问权限   对。有关更多信息,请参阅   线程安全和访问权限。

     

Windows Server 2003和Windows   XP / 2000:手柄必须有   THREAD_SET_INFORMATION访问权限。