GetPriorityClass 関数 (processthreadsapi.h)
指定したプロセスの優先度クラスを取得します。 この値は、プロセスの各スレッドの優先順位値と組み合わされ、各スレッドの基本優先順位を決定します。
構文
DWORD GetPriorityClass(
[in] HANDLE hProcess
);
パラメーター
[in] hProcess
プロセスへのハンドル。
ハンドルには、 PROCESS_QUERY_INFORMATION または PROCESS_QUERY_LIMITED_INFORMATION アクセス権が必要です。 詳細については、「 プロセス のセキュリティとアクセス権」を参照してください。
Windows Server 2003 および Windows XP: ハンドルには 、PROCESS_QUERY_INFORMATION アクセス権が必要です。
戻り値
関数が成功した場合、戻り値は指定されたプロセスの優先度クラスです。
関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。
プロセスの優先度クラスは、次のいずれかの値です。
リターン コード/値 | Description |
---|---|
|
NORMAL_PRIORITY_CLASSより優先度が高いが、HIGH_PRIORITY_CLASS未満のプロセス。 |
|
IDLE_PRIORITY_CLASSより優先度が高いが、NORMAL_PRIORITY_CLASSを下回るプロセス。 |
|
正しく実行するために直ちに実行する必要があるタイム クリティカルなタスクを実行するプロセス。 優先度の高いクラス プロセスのスレッドは、通常またはアイドル状態の優先度クラス プロセスのスレッドを優先します。 たとえば、タスク リストは、オペレーティング システムの負荷に関係なく、ユーザーが呼び出したときに迅速に応答する必要があります。 優先度の高いクラスの CPU バインド アプリケーションでは、使用可能なすべてのサイクルを使用できるため、優先度の高いクラスを使用する場合は細心の注意を払います。 |
|
システムがアイドル状態で、優先度の高いクラスで実行されているプロセスのスレッドによって優先される場合にのみスレッドが実行されるプロセス。 たとえばスクリーン セーバーなどです。 優先度クラスは子プロセスに継承されます。 |
|
特別なスケジュール設定を必要としないプロセス。 |
|
可能な限り高い優先度を持つプロセス。 リアルタイム優先度クラス プロセスのスレッドは、重要なタスクを実行するオペレーティング システム プロセスを含め、他のすべてのプロセスのスレッドを優先します。 たとえば、非常に短い間隔を超えて実行されるリアルタイム プロセスでは、ディスク キャッシュがフラッシュされないか、マウスが応答しなくなる可能性があります。 |
解説
すべてのスレッドには、スレッドの優先度値とそのプロセスの優先度クラスによって決まる基本優先度レベルがあります。 オペレーティング システムは、すべての実行可能スレッドの基本優先度レベルを使用して、CPU 時間の次のスライスを取得するスレッドを決定します。 スレッドは各優先度レベルでラウンドロビン方式でスケジュールされ、より高いレベルの実行可能スレッドがない場合にのみ、より低いレベルでスレッドのスケジュールが行われます。
優先度クラスとスレッド優先度値の組み合わせごとの基本優先度レベルを示すテーブルについては、「 スケジュールの優先順位」を参照してください。
優先度クラスはエグゼクティブによって管理されるため、すべてのプロセスにクエリを実行できる優先度クラスがあります。
例
例については、「スナップショットの 作成」と「プロセスの表示」を参照してください。
要件
サポートされている最小のクライアント | Windows XP [デスクトップ アプリ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | processthreadsapi.h (Windows Server 2003、Windows Vista、Windows 7、Windows Server 2008 Windows Server 2008 R2 の Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |