GetCurrentProcess

現在のプロセスの擬似ハンドルを取得します。この擬似ハンドルは呼び出したプロセスにおいてのみプロセスハンドルとして有効です。

HANDLE GetCurrentProcess(VOID);

KERNEL32.DLL

引数

引数はありません。

戻り値

現在のプロセスの擬似ハンドルが返ります。

解説

この関数によって取得される擬似ハンドルは、現在のプロセスハンドルをして解釈される定数です。現在、この定数として-1が使われています。今後のオペレーティングシステムの互換性のため、この定数をハードコーディングするのではなく、GetCurrentProcess関数を呼び出すべきです。

呼び出しプロセスは、プロセスハンドルが要求されるときに、擬似ハンドルを使用して自身のプロセスを指定することができます。擬似ハンドルは子プロセスに継承されません。

擬似ハンドルは、プロセスオブジェクトへの最大限のアクセスを持ちます。セキュリティ記述子をサポートするシステムでは、セキュリティ記述子によって許される最大限のアクセスを持ちます。セキュリティ記述子をサポートしないシステムでは、すべてのアクセス(PROCESS_ALL_ACCESS)を持ちます。

DuplicateHandle関数を呼び出す際にソースハンドルとして擬似ハンドルを指定することにより、別プロセスのコンテキストで有効な、あるいは別プロセスに継承される、自身のプロセスへの“真の”ハンドルを作成することができます。また、OpenProcess関数を使用して、自身のプロセスへの真のハンドルをオープンすることもできます。

擬似ハンドルが不要になっても、ハンドルをクローズする必要はありません。擬似ハンドルを指定してCloseHandle関数を呼び出すと、関数は何もせずに制御を返します。DuplicateHandle関数によりハンドルを複製した場合には、複製ハンドルをクローズしなければいけません。

対応情報

Windows 95 以降 / Windows NT 3.1 以降