<Return[G]><Top>

GetPriorityClass

Declare Function Api_GetPriorityClass& Lib "kernel32" Alias "GetPriorityClass" (ByVal hProcess&)

Declare Function GetPriorityClass Lib "kernel32" Alias "GetPriorityClass" (ByVal hProcess As Long) As Long

指定されたプロセスの優先順位クラスを返す。プロセスの優先順位クラスと、スレッドの相対優先順位値によって、各スレッドの基本優先順位レベルが決まる。

パラメータ
hProcess
    プロセスのハンドルを指定する。
    Windows NT/2000:このハンドルに、PROCESS_QUERY_INFORMATION アクセス権を割り当てておかなければならない

戻り値
    関数が成功すると、指定したプロセスの優先順位クラスが返る。
    関数が失敗すると、0 が返る。拡張エラー情報を取得するには、GetLastError 関数を使う。
    プロセスの優先順位クラスは、次の値のいずれかである。

    優先順位クラス                                      

意味                                                  

    ABOVE_NORMAL_PRIORITY_CLASS

Windows 2000:このプロセスに、NORMAL_PRIORITY_CLASS より高く、

 

HIGH_PRIORITY_CLASS より低い優先順位を割り当てる。

    BELOW_NORMAL_PRIORITY_CLASS

Windows 2000:このプロセスに、IDLE_PRIORITY_CLASS より高く、

 

NORMAL_PRIORITY_CLASS より低い優先順位を割り当てる。

    HIGH_PRIORITY_CLASS

このプロセスが、タイムクリティカルなタスクを実行することを示す。このクラスを割り当てられた

 

プロセスのスレッドは、NORMAL_PRIORITY_CLASS や IDLE_PRIORITY_CLASS を割り

 

当てられたプロセスのスレッドより先に実行される。1 つの例はタスクリストであり、ユーザーが

 

タスクリストを呼び出した場合、オペレーティングシステムの負荷にかかわりなく、迅速に応答

 

 しなければならない。HIGH_PRIORITY_CLASS を割り当てる場合、十二分の注意が必

 

要である。CPU に大きく依存するアプリケーションにこのクラスを割り当てると、利用可能なほ

 

ぼすべての CPU サイクルを占有する可能性があるからである。

    IDLE_PRIORITY_CLASS

システムがアイドル状態のときにのみ、このプロセスを実行することを示す。このプロセスより、

 

優先順位クラスの高い他のプロセスが先に実行される。1 つの例はスクリーンセーバーであ

 

る。子プロセスは、この優先順位クラスを継承する。

    NORMAL_PRIORITY_CLASS

特別なスケジューリングを必要としない、一般的なプロセスであることを示す。

    REALTIME_PRIORITY_CLASS

このプロセスが、最も高い優先順位クラスを持つプロセスであることを示す。このクラスを割り当

 

てられたプロセスに所属するスレッドは、重要なタスクを実行するオペレーティングシステムのプ

 

ロセスを含むほかのすべてのプロセスのスレッドより先に実行される。少しでも長い時間実行す

 

ると、ディスクキャッシュがフラッシュされなくなったり、マウスが応答しなくなることがある。


解説
    各スレッドの基本優先順位レベルは、所属プロセスの優先順位クラスと、そのスレッドの相対優先順位値によって決まる。

    オペレーティングシステムは実行可能なすべてのスレッドの基本優先順位レベルに基づいて、CPU 時間軸の次のスライスでどのスレッドを実

    行するかを決定する。同じ優先順位レベルに複数のスレッドが存在する場合、それらのスレッドはラウンドロビン形式でスケジューリングさ

    れ、より高いレベルの実行可能なスレッドが存在しない場合に限って、より低いレベルのスレッドが実行される。