次の方法で共有


スレッド ハンドルと識別子

CreateThread または CreateRemoteThread関数によって新しいスレッドが作成されると、スレッドへのハンドルが返されます。 既定では、このハンドルにはフル アクセス権があり、セキュリティ アクセス チェックの対象となり、スレッド ハンドルを受け入れる任意の関数で使用できます。 このハンドルは、作成時に指定された継承フラグに応じて、子プロセスによって継承できます。 このハンドルは、DuplicateHandleによって複製できます。これにより、アクセス権のサブセットを持つスレッド ハンドルを作成できます。 ハンドルは、それが表すスレッドが終了した後でも、閉じられるまで有効です。

CreateThread および CreateRemoteThread関数は、システム全体でスレッドを一意に識別する識別子も返します。 スレッドは、GetCurrentThreadId 関数を使用して、独自のスレッド識別子を取得できます。 識別子は、スレッドが作成されてからスレッドが終了するまで有効です。 スレッド識別子が 0 になることはありません。

スレッド識別子がある場合は、OpenThread 関数を呼び出すことでスレッド ハンドルを取得できます。 OpenThread を使用すると、ハンドルのアクセス権と、ハンドルを継承できるかどうかを指定できます。

スレッドは、GetCurrentThread 関数を使用して、独自のスレッド オブジェクトに 擬似ハンドルを取得できます。 この擬似ハンドルは、呼び出し元のプロセスに対してのみ有効です。他のプロセスで使用するために継承または複製することはできません。 擬似ハンドルを指定してスレッドに対する実際のハンドルを取得するには、DuplicateHandle関数使用します。

プロセスのスレッドを列挙するには、Thread32First を使用し、Thread32Next関数します。