在服务中设置线程优先级无效[关闭]
-
04-07-2019 - |
题
在我可以在Windows服务中设置线程优先级之前是否需要一些其他配置?
在我的服务中,我有一些线程,每个线程都调用 CreateProcess()
函数来启动外部应用程序。我想根据一些其他因素将线程(或进程)优先级调整为 normal
或 lower
。
问题是 SetThreadPriority()
函数失败并出现错误6(句柄无效?)。我传入一个从 PROCESS_INFORMATION :: hThread
获得的句柄(当然在调用 CreateProcess()
之后),所以我认为句柄应该有效。
我也尝试使用 SetPriorityClass()
函数设置进程的优先级,这也失败了。
该服务以本地用户身份登录。
解决方案
也许您没有正确的访问权限? 关于SetThreadPriority的MSDN 说:
hThread [in]线程的句柄 其优先级值将被设置。
手柄必须有 THREAD_SET_INFORMATION或 THREAD_SET_LIMITED_INFORMATION访问权限 对。有关更多信息,请参阅 线程安全和访问权限。
Windows Server 2003和Windows XP / 2000:手柄必须有 THREAD_SET_INFORMATION访问权限。
不隶属于 StackOverflow