ライブ ユーザーモード ターゲット

このトピックに記載されているプロセスを作成およびアタッチする方法は、ローカル コンピューターとプロセス サーバーを実行しているリモート コンピューターに使用できます。

ユーザー モード プロセスは Create Process または CreateProcess2 を使用して作成できます。これらは、指定されたコマンドを実行してプロセスを作成します。 方法 AttachProcess を取り付けるために使用できる デバッガーエンジン を既存のユーザーモードプロセスに追加する。 CreateProcessAndAttachCreateProcessAndAttach2 は、新しいユーザー モード プロセスを作成し、同じコンピューター上のユーザー モード プロセスまたは別のユーザー モード プロセスにアタッチします。 (その リクエスト 事業 DEBUG_REQUEST_GET_ADDITIONAL_CREATE_OPTIONS, DEBUG_REQUEST_SET_ADDITIONAL_CREATE_OPTIONS, and DEBUG_REQUEST_SET_LOCAL_IMPLICIT_COMMAND_LINE を使用して、プロセスを作成する際のデフォルト・オプションのいくつかを設定することができる。

注:WaitForEvent メソッドが呼び出されるまで、エンジンはプロセスに完全にアタッチされません。 プロセスがイベント (プロセス作成イベントなど) を生成した後にのみ、デバッガー セッションで使用できるようになります。 詳細については、「 セッションと実行モデル のデバッグ 」を参照してください。

GetRunningProcessSystemIds メソッドは、コンピューター上で実行中のすべてのプロセスのプロセス ID を返します。 特定のプログラムのプロセス ID は GetRunningProcessSystemIdByExecutableName を使用して見つけることができます。 プロセス ID を指定すると、プロセスの説明が GetRunningProcessDescription によって返されます。

[処理オプション]

プロセス オプションは、デバッガー エンジンがターゲット プロセスによって作成された子プロセスに自動的にアタッチされるかどうかや、終了時にエンジンがターゲット プロセスに対して実行する処理など、ユーザー モード プロセスにアタッチされたときのエンジンの動作の一部を決定します。 プロセス オプションの説明については DEBUG_PROCESS_XXX を参照してください。

プロセス オプションは GetProcessOptions を使用して照会できます。 これらは AddProcessOptionsRemoveProcessOptions、および SetProcessOptions を使用して変更できます。

プロセスからの切断

エンジンがプロセスから切断するには、3 つの異なる方法があります。

  1. 切り離す. プロセス内のすべてのスレッドを再開して、実行を続行し、デバッグを終了します。 DetachCurrentProcess は現在のプロセスからエンジンをデタッチし、 DetachProcesses はすべてのプロセスからエンジンをデタッチします。 すべてのターゲットがデタッチをサポートしているわけではありません。 (その リクエスト リクエスト DEBUG_REQUEST_TARGET_CAN_DETACH を使えば、ターゲットがデタッチに対応しているかどうかをチェックできる。

  2. Terminate。 プロセスの強制終了を試みます。 TerminateCurrentProcess は現在のプロセスを終了し、 TerminateProcesses はデバッガー セッション内のすべてのプロセスを終了します。

  3. 放棄. デバッグ対象のプロセスの一覧からプロセスを削除します。 オペレーティング システムは引き続きプロセスをデバッグ中と見なし、別のデバッガーがアタッチされるか強制終了されるまでメイン中断されます。 AbandonCurrentProcess は現在のプロセスを破棄します。