GetCurrentThread

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

HANDLE GetCurrentThread(VOID);

KERNEL32.DLL

引数

引数はありません。

戻り値

現在のスレッドの擬似ハンドルが返ります。

解説

この関数によって取得される擬似ハンドルは、現在のスレッドハンドルをして解釈される定数です。呼び出しスレッドは、スレッドハンドルが要求されるときに、擬似ハンドルを使用して自身のスレッドを指定することができます。擬似ハンドルは子プロセスに継承されません。

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

あるスレッドがこの関数を使用してハンドルを取得したとき、別のスレッドがこのハンドルを使用して元のスレッドを参照することはできません。擬似ハンドルは、常にそのハンドルを使用しているスレッドを参照していると解釈されます。DuplicateHandle関数を呼び出す際にソースハンドルとして擬似ハンドルを指定することにより、別スレッドで使用することのできる、あるいは別プロセスに継承される、自身のスレッドの“真の”ハンドルを作成することができます。

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

対応情報

Windows 95 以降 / Windows NT 3.1 以降