2

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

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

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

我还尝试使用该SetPriorityClass()功能设置进程的优先级,但也失败了。

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

4

1 回答 1

2

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

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

句柄必须具有 THREAD_SET_INFORMATION 或 THREAD_SET_LIMITED_INFORMATION 访问权限。有关详细信息,请参阅线程安全和访问权限。

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

于 2008-10-27T07:28:16.287 回答