サービスでスレッドの優先度を設定しても効果はありません[完了]
-
04-07-2019 - |
質問
Windowsサービスでスレッドの優先順位を設定する前に、追加の構成が必要ですか?
私のサービスには、それぞれ CreateProcess()
関数を呼び出して外部アプリケーションを起動するスレッドがいくつかあります。他のいくつかの要因に応じて、スレッド(またはプロセス)の優先順位を normal
または lower
に調整したい。
問題は、 SetThreadPriority()
関数がエラー6(無効なハンドル?)で失敗することです。 PROCESS_INFORMATION :: hThread
(もちろん CreateProcess()
を呼び出した後)から取得したハンドルを渡しているので、ハンドルは em>有効です。
また、 SetPriorityClass()
関数を使用してプロセスの優先度を設定しようとしましたが、これも失敗します。
サービスはローカルユーザーとしてログオンしています。
解決
正しいアクセス権を持っていないのでしょうか? SetThreadPriorityのMSDN のコメント:
hThread [in]スレッドへのハンドル 優先度の値が設定されます。
ハンドルには THREAD_SET_INFORMATIONまたは THREAD_SET_LIMITED_INFORMATIONアクセス 右。詳細については、 スレッドのセキュリティとアクセス権。
Windows Server 2003およびWindows XP / 2000:ハンドルには THREAD_SET_INFORMATIONアクセス権。
所属していません StackOverflow