【问题标题】:Setting a thread priority in a service has no effect [closed]在服务中设置线程优先级无效[关闭]
【发布时间】:2008-10-27 05:41:27
【问题描述】:

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 有可能。我正在尝试将 SECURITY_DESCRIPTOR 传递给 CreateProcess(),希望我可以获得完全访问权限,但它似乎没有任何效果,因为我仍然收到错误 6 并且优先级没有改变。我可能在设置这个时做错了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    • 2014-10-27
    • 1970-01-01
    相关资源
    最近更新 更多