<Return[G]><Top>

GetCurrentProcess

Declare Function Api_GetCurrentProcess& Lib "kernel32" Alias "GetCurrentProcess" ()

Declare Function GetCurrentProcess Lib "kernel32" () As Long

現在のプロセスに対応する疑似ハンドルを取得する。

パラメータ
    パラメータはなし。

戻り値
    現在のプロセスの疑似ハンドルが返る。

解説
    疑似ハンドルとは、現在のプロセスのハンドルと解釈される特別な定数のことである。

    呼び出し側プロセスがプロセスハンドルを必要とする関数を呼び出す場合、この疑似ハンドルを使ってそのプロセス自身を指定できる。

    子プロセスは、擬似ハンドルを継承しない。
    擬似ハンドルには、プロセスオブジェクトに対するアクセス権として、可能な範囲で最大の権利が割り当てられる。

    セキュリティ記述子をサポートしているシステムでは、呼び出し側のセキュリティ記述子が許可している最大のアクセス権が割り当てられる。 

    セキュリティ記述子をサポートしていないシステムでは、PROCESS_ALL_ACCESS アクセス権が割り当てられる。
    擬似ハンドルをコピー元として指定して DuplicateHandle 関数を呼び出すと、プロセスは自分自身を表す(擬似ハンドルではない)

    「本物」のハンドルを取得できる。このハンドルは他のプロセスのコンテキストでも有効であり、子プロセスへ継承することもできる。

    各プロセスは、OpenProcess 関数を使って、自分自身を表す本物のハンドルを開くことができる。
    擬似ハンドルは、不要になっても閉じる必要がない。擬似ハンドルに対して CloseHandle を呼び出しても何の効果もない。ただし、

    DuplicateHandle 関数を使って擬似ハンドルを複製した場合、CloseHandle 関数を使って、複製先のハンドルを閉じなければならない。