質問

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アクセス権。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top