GetCurrentThread 関数 (processthreadsapi.h)
呼び出し元のスレッドの擬似ハンドルを取得します。
構文
HANDLE GetCurrentThread();
戻り値
戻り値は、現在のスレッドの擬似ハンドルです。
注釈
擬似ハンドルは、現在のスレッド ハンドルとして解釈される特殊な定数です。 呼び出し元のスレッドは、このハンドルを使用して、スレッド ハンドルが必要な場合は常にそれ自体を指定できます。 擬似ハンドルは子プロセスによって継承されません。
このハンドルには、 スレッド オブジェクトへのTHREAD_ALL_ACCESSアクセス権があります。 詳細については、「 スレッド セキュリティとアクセス権」を参照してください。
Windows Server 2003 および Windows XP: このハンドルには、プロセスのプライマリ トークンに対するスレッドのセキュリティ記述子によって許可される最大アクセス権があります。
関数を 1 つのスレッドで使用して、他のスレッドが最初のスレッドを参照するために使用できるハンドルを作成することはできません。 ハンドルは常に、それを使用しているスレッドを参照していると解釈されます。 スレッドは、 DuplicateHandle 関数の呼び出しでソース ハンドルとして擬似ハンドルを指定することで、他のスレッドで使用したり、他のプロセスから継承したりできる "実際の" ハンドルを自身に作成できます。
擬似ハンドルは、不要になったときに閉じる必要はありません。 このハンドルを使用して CloseHandle 関数を呼び出しても効果はありません。 擬似ハンドルが DuplicateHandle によって複製される場合は、重複するハンドルを閉じる必要があります。
セキュリティ コンテキストの偽装中にスレッドを作成しないでください。 呼び出しは成功しますが、新しく作成されたスレッドは 、GetCurrentThread を呼び出すときにそれ自体へのアクセス権を減らします。 このスレッドに付与されたアクセス権は、偽装されたユーザーがプロセスに対して持つアクセス権から派生します。 THREAD_SET_THREAD_TOKENやTHREAD_GET_CONTEXTを含む一部のアクセス権が存在せず、予期しないエラーが発生する可能性があります。
例
例については、「 クライアント アクセスの確認」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP [デスクトップ アプリ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | processthreadsapi.h (Windows Server 2003、Windows Vista、Windows 7、Windows Server 2008 Windows Server 2008 R2 の Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |