クライアント オブジェクト
デバッガー エンジンとのほぼすべての対話は、クライアント オブジェクト (単にクライアント と呼ばれる場合も多い) を介して行われます。 各クライアントは、最上位レベルのエンジン インターフェイスの実装を提供します。 各インターフェイスはそれぞれ異なるメソッドのセットを提供し、これを使用してエンジンとの対話や、エンジンを介したターゲットとの対話を実行できます。 エンジンの 1 つのインスタンスに多数のクライアントを接続でき、それぞれ固有の状態を設定できます。
プライマリ クライアント
プライマリ クライアントは、現在のデバッグ セッションに参加しているクライアントです。 新しいクライアント オブジェクトが作成された時点では、最初はプライマリ クライアントではありません。 クライアントがプライマリ クライアントになるのは、(たとえば CreateProcess2 を呼び出すことで) ターゲットを取得するために使用されたとき、または ConnectSession を使用してデバッグ セッションに接続されたときです。 デバッガー コマンド .clients を使用すると、プライマリ クライアントのみが一覧表示されます。
コールバック オブジェクト
コールバック オブジェクトは、各クライアントに登録できます。 コールバック オブジェクトには、次の 3 種類があります。
入力コールバック オブジェクト (または 入力コールバック): エンジンは入力コールバックを呼び出して入力を要求します。 たとえば、コンソール ウィンドウを備えたデバッガーが、ユーザーからの入力をエンジンに提供するために入力コールバックを登録する場合や、ファイルからの入力をエンジンに提供するために、デバッガーが入力コールバックを登録する場合があります。
出力コールバック オブジェクト (または 出力コールバック): エンジンは出力コールバックを呼び出して出力を表示します。 たとえば、コンソール ウィンドウを備えたデバッガーが、デバッガーの出力をユーザーに表示するために出力コールバックを登録する場合や、出力をログ ファイルに送信するために、デバッガーが出力コールバックを登録する場合があります。
イベント コールバック オブジェクト (または イベント コールバック): エンジンは、イベントがターゲットで発生するたびに (または、エンジンの状態が変化した場合に) イベント コールバックを呼び出します。 たとえば、デバッガー拡張機能ライブラリが、特定のイベントを監視するためにイベント コールバックを登録する場合や、特定のイベントが発生したときに自動アクションを実行するためにイベント コールバックを登録する場合があります。
Remote Debugging
クライアント オブジェクトは、ホスト エンジンのリモート インスタンスとの通信を容易にします。 DebugConnect 関数は、リモート エンジン インスタンスに接続されたクライアント オブジェクトを作成します。このクライアントで呼び出されるメソッドはリモート エンジンによって実行され、リモート エンジンがコールバック呼び出しを実行すると、クライアントでローカルに登録されたコールバック オブジェクトが呼び出されます。
追加情報
クライアント オブジェクトの作成と使用の詳細については、「コールバック オブジェクトの使用」を参照してください。 コールバック オブジェクトの登録の詳細については、「コールバック オブジェクトの使用」を参照してください。