次の方法で共有


入力と出力の使用

デバッガー エンジンの入力ストリームと出力ストリームの概要については、「入力と出力」を参照してください。

入力

Input メソッドがクライアントで呼び出されると、エンジンはすべてのクライアントからの入力を要求します。 入力は Input の呼び出し元に返されます。

入力コールバック

エンジンは、クライアントからの入力を要求すると、そのクライアントに登録されている IDebugInputCallbacks オブジェクトを使用します。 IDebugInputCallbacks オブジェクトは、SetInputCallbacks を使用してクライアントに登録できます。 各クライアントには、最大 1 つの IDebugInputCallbacks オブジェクトを登録できます。

入力の要求は、IDebugInputCallbacks::StartInput メソッドを呼び出すエンジンから始まります。 このようにして、エンジンが入力の待機中であることを IDebugInputCallbacks オブジェクトに通知します。

IDebugInputCallbacks オブジェクトにエンジンの入力がある場合は、任意のクライアントの ReturnInput メソッドを呼び出すことができます。 ReturnInput メソッドが呼び出されると、エンジンはそれ以上入力を取得しません。 このメソッドの後続の呼び出し元には、入力が受信されなかったことが通知されます。

その後、エンジンは IDebugInputCallbacks::EndInput を呼び出して、入力の待機を停止したことを示します。

最後に、エンジンは、ビットマスクが DEBUG_OUTPUT_PROMPT に設定されている IDebugOutputCallbacks::Output を使用して、すべてのクライアントの登録済み IDebugOutputCallbacks オブジェクト (入力を指定するために使用されたものを除く) にこの入力をエコーします。

出力

出力は、OutputOutputVaList など、複数のクライアント メソッドを使用してエンジンに出力することができます。 エンジンは出力を受信すると、一部のクライアントにその出力を送信します。

クライアントは、出力マスクを使用して、関心のある出力の種類を示します。 エンジンで出力が生成されると必ず、出力の種類を指定するマスクが示されます。 出力の種類がクライアントの出力マスクと一致する場合、クライアントは出力を取得します。 出力マスクは、SetOutputMask を呼び出して設定でき、GetOutputMask を使用してクエリを実行できます。 出力マスク値の詳細については、DEBUG_OUTPUT_XXX を参照してください。

エンジンが出力を送信するクライアントの一覧は、出力制御によって制御されます。 通常、出力制御は、すべてのクライアントに出力を送信するように設定されます。ただし、ControlledOutputControlledOutputVaList を使用して一時的に変更することができます。 出力制御値の詳細については、DEBUG_OUTCTL_XXX を参照してください。

出力はエンジンによってバッファー処理される場合があります。 複数の出力がエンジンに渡されると、それらを収集して 1 つの大きな出力としてクライアントに送信できます。 このバッファーをフラッシュするには、FlushCallbacks を使用 します。

各クライアント オブジェクトにの出力幅が設定されています。出力幅とは、クライアント オブジェクトの出力表示の幅です。 この幅はヒントとしてのみ使用されますが、一部のコマンドおよび拡張関数では、この幅に基づいて出力が書式設定されます。 幅は GetOutputWidth メソッドによって返され、SetOutputWidth メソッドを使用して設定できます。

出力コールバック

エンジンはクライアントに出力を送信するとき、クライアントに登録されている IDebugOutputCallbacks オブジェクトを使用します。 IDebugOutputCallbacks オブジェクトは、SetOutputCallbacks を使用してクライアントに登録できます。 各クライアントには、最大 1 つの IDebugInputCallbacks オブジェクトを登録できます。

出力を送信するために、エンジンは IDebugOutputCallbacks::Output メソッドを呼び出します。

出力行プレフィックス

各クライアント オブジェクトには、出力行プレフィックスが設定されています。これは、クライアント オブジェクトに関連付けられている出力コールバックに送信される、すべての出力行の先頭に追加されるものです。 インデントに使用したり、出力の各行に識別マークを配置するために使用したりできます。

出力行プレフィックスは GetOutputLinePrefix によって返され、SetOutputLinePrefix を使用して設定できます。 出力行プレフィックスを一時的に変更し、後で元に戻すには、PushOutputLinePrefix と PopOutputLinePrefix を使用します。

ログ ファイル

デバッガー エンジンでは、デバッグ セッションを記録するログ ファイルを開く機能がサポートされています。 最大で、一度に 1 つのログ ファイルを開くことができます。 出力コールバックに送信された出力も、このログ ファイルに送信されます (ログに記録しないようフラグが設定されている場合を除く)。

ログ ファイルを開くには、OpenLogFile2 (または OpenLogFile) を使用します。 GetLogFile2 (または GetLogFile) メソッドは、現在開いているログ ファイルを返します。 ログ ファイルを閉じるには、CloseLogFile を使用します。

SetLogMask メソッドを使用すると、ログ ファイルに送信された出力をフィルター処理でき、GetLogMask は現在のログ ファイル フィルターを返します。

プロンプト

対話型デバッグ セッションでは、プロンプトを使用して、デバッガーがユーザーによる入力を待機中であることをユーザーに示すことができます。 プロンプトは、OutputPrompt メソッドと OutputPromptVaList メソッドを使用して出力コールバックに送信されます。 標準プロンプトの内容は GetPromptText によって返されます。