継承の処理
子プロセスは、親プロセスからハンドルを継承できます。 継承されたハンドルは、子プロセスのコンテキストでのみ有効です。 子プロセスが親プロセスから開いているハンドルを継承できるようにするには、次の手順を使用します。
- SECURITY_ATTRIBUTES構造体の bInheritHandle メンバーを TRUE に設定してハンドルを作成します。
- BInheritHandles パラメーターを TRUE に設定して、CreateProcess 関数を使用して子プロセスを作成します。
DuplicateHandle 関数は、現在のプロセスまたは別のプロセスで使用されるハンドルを複製します。 アプリケーションが別のプロセスのハンドルの 1 つを複製した場合、重複するハンドルは、もう一方のプロセスのコンテキストでのみ有効です。
重複または継承されたハンドルは一意の値ですが、元のハンドルと同じオブジェクトを参照します。 プロセスは、次の種類のオブジェクトにハンドルを継承または複製できます。
- Access Token
- 通信デバイス
- コンソール入力
- コンソール画面バッファー
- デスクトップ
- ディレクトリ
- イベント
- ファイル
- ファイル マッピング
- ジョブ
- Mailslot
- Mutex
- Pipe
- Process
- レジストリ キー
- Semaphore
- ソケット
- スレッド
- Timer
- ウィンドウステーション
他のすべてのオブジェクトは、それらを作成したプロセスに対してプライベートです。オブジェクト ハンドルを複製または継承することはできません。
詳細については、「継承」を参照してください。