SetPriorityClass

指定されたプロセスの優先度クラスを設定します。この値とスレッドの相対優先度の値により、それぞれのスレッドの基準優先度レベルが決定されます。

BOOL SetPriorityClass(
    HANDLE hProcess,    // process handle
    DWORD  fdwPriority  // priority class
);

KERNEL32.DLL

引数

hProcess

優先度を変更するプロセスのハンドルを指定します。

このハンドルはPROCESS_SET_INFORMATIONアクセス権を持っていなければなりません。

fdwPriority

プロセスの優先度クラスを指定します。以下の値のいずれかを指定することができます。

0x00000020 (NORMAL_PRIORITY_CLASS)

特別なスケジューリングを必要としないプロセスです。

0x00000040 (IDLE_PRIORITY_CLASS)

システムがアイドル状態のときにだけスレッドを実行するプロセスです。このプロセスのスレッドは、より高い優先度クラスで実行されているスレッドより優先して実行されます。アイドル優先度クラスは子プロセスに引き継がれます。

0x00000080 (HIGH_PRIORITY_CLASS)

直ちに実行されなければならないタイムクリティカルなタスクを実行するプロセスです。このプロセスのスレッドは、通常クラスやアイドルクラスのプロセスに属するスレッドより優先して実行されます。このクラスのアプリケーションはほぼすべてのCPU空き時間を占有可能となるため、このクラスを指定する場合は十分に注意する必要があります。

0x00000100 (REALTIME_PRIORITY_CLASS)

最も高い優先順位クラスを持つプロセスです。このプロセスのスレッドは、重要なタスクを実行しているオペレーティングシステムのプロセスを含む、他のすべてのプロセスに属するスレッドのより優先して実行されます。

0x00004000 (BELOW_NORMAL_PRIORITY_CLASS)

Windows 2000/XP: IDLE_PRIORITY_CLASSより高くNORMAL_PRIORITY_CLASSより低い優先度を持つプロセスです。

0x00008000 (ABOVE_NORMAL_PRIORITY_CLASS)

Windows 2000/XP: NORMAL_PRIORITY_CLASSより高くHIGH_PRIORITY_CLASSより低い優先度を持つプロセスです。

戻り値

成功すると0以外の値が返ります。

失敗すると0が返ります。拡張エラー情報を取得するには、GetLastError関数を使います。

解説

それぞれのスレッドは、プロセスの優先度クラスとスレッドの相対優先度から決定される基準優先度を持ちます。システムは、すべての実行可能スレッドの基準優先度を使用して、次のCPUのタイムスライスを与えるスレッドを決定します。スレッドの相対優先度はSetThreadPriority関数で指定します。

対応情報

Windows 95 以降 / Windows NT 3.1 以降