指定したプロセスの優先度クラスを設定する。この値とプロセス内各スレッドの優先度値が各スレッドの基本優先度レベルを決定する。
SetPriorityClass hProcess, dwPriorityClass
hProcess : [intptr] プロセスへのハンドル。 dwPriorityClass : [int]
(プラグイン / モジュール : kernel32.dll)
指定したプロセスの優先度クラスを設定する。この値とプロセス内各スレッドの優先度値が各スレッドの基本優先度レベルを決定する。 [戻り値] 関数が成功した場合、戻り値は非ゼロである。失敗した場合はゼロである。拡張エラー情報を取得するには GetLastError を呼び出す。 [備考] 各スレッドには、スレッドの優先度値とそのプロセスの優先度クラスから決まる基本優先度レベルがある。システムはすべての実行可能スレッドの基本優先度レベルを使って、次にどのスレッドに CPU 時間を割り当てるかを決める。SetThreadPriority 関数はプロセスの優先度クラスに対する相対的なスレッドの基本優先度レベル設定を可能にする。詳細は「スケジューリング優先度」を参照。*_PRIORITY_CLASS 値はプロセスの CPU スケジューリング優先度に影響する。ファイル I/O、ネットワーク I/O、データ処理などのバックグラウンド作業を行うプロセスでは、CPU スケジューリング優先度を下げるだけでは不十分であり、アイドル CPU 優先度のプロセスでもディスクやメモリを使えばシステム応答性を簡単に妨げうる。バックグラウンド作業を行うプロセスは PROCESS_MODE_BACKGROUND_BEGIN/PROCESS_MODE_BACKGROUND_END を使ってリソーススケジューリング優先度を調整すべきで、ユーザーとやり取りするプロセスでは PROCESS_MODE_BACKGROUND_BEGIN を使うべきでない。プロセスがバックグラウンド処理モードにある間に作成される新しいスレッドもバックグラウンド処理モードとなる。バックグラウンド処理モードのスレッドは、他スレッドとクリティカルセクション、ヒープ、ハンドルなどのリソース共有を最小限にすべきで、さもなくば優先度反転が起こりうる。高優先度で実行中のスレッドがいる場合、バックグラウンド処理モードのスレッドはすぐにはスケジュールされないかもしれないが、飢餓状態にはならない。各スレッドは SetThreadPriority を使って個別にバックグラウンド処理モードに入れる。プロセス内のスレッドが SetThreadPriority でバックグラウンド処理モードに入った後に SetPriorityClass でバックグラウンド処理モードに入れてはならない。プロセスがバックグラウンド処理モードを終えるとプロセス内の全スレッドがリセットされるが、プロセスはどのスレッドがすでにバックグラウンド処理モードであったかを知ることはできない。
| プラグイン / モジュール | kernel32.dll |
| バージョン | 1.0 |
| 作成日 | 2026/04/16 |
| 著作者 | IronHSP / CsWin32 bridge |
| URL | https://github.com/inovia/IronHSP |
| 備考 | Win32 API の kernel32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。 |
| タイプ | 拡張命令 |
| グループ | Win32API |
| 対応環境 |
|
| hs ファイル | hsphelp\win32_kernel32_gen2.hs |