<Return[E]><Top>

ExitProcess

Declare Sub Api_ExitProcess Lib "kernel32" Alias "ExitProcess" (ByVal uExitCode&)

Declare Sub ExitProcess Lib "kernel32" (ByVal uExitCode As Long)

1 つのプロセスと、そのプロセスに所属するすべてのスレッドを終了させる。

パラメータ
uExitCode
    この関数を呼び出した結果終了される、1 つのプロセスとそのプロセスに所属するすべてのスレッドの終了コードを指定する。

    プロセスの終了コードを取得するには、GetExitCodeProcess 関数を使う。スレッドの終了コードを取得するには、GetExitCodeThread

    function 関数を使う。
 

戻り値
    戻り値はない。

解説
    プロセスを終了するには、ExitProcess 関数を使うのが好ましい方法である。この関数は、終了処理が進行中であることを、

    プロセスにアタッチしている DLL へ通知する。

    TerminateProcess 関数を使ってプロセスを終了させると、このプロセスは、プロセスの終了を DLL へ通知しない。
    アタッチされているすべての DLL が、プロセスの終了コードに基づいて適切な動作を行った後、この関数は現在のプロセスを終了させる。
    プロセスを終了させると、次のことが発生する。
    1.このプロセスが開いたすべてのオブジェクトハンドルが閉じられる。
    2.プロセス内のすべてのスレッドが動作を終了する。
    3.プロセスオブジェクトがシグナル状態になり、そのプロセスが終了するのを待っていたすべてのスレッドの条件を満たす。
    4.プロセス内のすべてのスレッドがシグナル状態になり、それらのスレッドが終了するのを待っていたすべてのスレッドの条件を満たす。
    5.プロセスの終了ステータスは、STILL_ACTIVE から、そのプロセスの終了コードへ変化する。
    プロセスを終了させても、その子プロセスが終了することはない。
    プロセスを終了させても、必ずしもそれに対応するプロセスオブジェクトがシステムから削除されるわけではない。

    プロセスに 1 つまたは複数のハンドルが割り当てられている場合、最後のハンドルを閉じると、プロセスオブジェクトが自動的に削除される。

解説
    指定した長方形の右辺と下辺は、クリッピングリージョンから除外されない。