次の方法で共有


IDebugHostEvaluator::EvaluateExtendedExpression メソッド (dbgmodel.h)

EvaluateExtendedExpression メソッドは EvaluateExpression メソッドに似ていますが、特定のデバッグ ホストが式エバリュエーターに追加することを選択した言語以外の追加機能に戻る点が異なります。 たとえば、Windows 用のデバッグ ツールでは、匿名型、LINQ クエリ、モジュール修飾子、書式指定子、およびその他の C/C++ 以外の機能が有効になります。

EvaluateExtendedExpression を介して 1 つのホストに対して評価される式が、同じ言語をデバッグする別のホストに対して正しく評価される保証はないことを注意してください。 式エバリュエーターの拡張機能は、特定のホストの purview です。 この正確な理由から、クライアントは EvaluateExtendedExpression メソッドの代わりに EvaluateExpression メソッドを使用することを強くお勧めします。 このメソッドを使用すると、呼び出し元の移植性が低下します。

構文

HRESULT EvaluateExtendedExpression(
  IDebugHostContext           *context,
  PCWSTR                      expression,
  IModelObject                *bindingContext,
  _COM_Errorptr_ IModelObject **result,
  IKeyStore                   **metadata
);

パラメーター

context

式の評価が行われるホスト コンテキスト。 たとえば、ポインターの逆参照によるターゲットのメモリ読み取りがある場合、それらのメモリ読み取りが行われるアドレス空間は、この引数によって指定されます。

expression

評価する式。 これには、言語構文に対するホスト プライベート拡張機能が使用される場合があります。

bindingContext

シンボル (変数) 名が検索されるバインディング コンテキスト。 C++ の場合、これは意味的にこのポインター値と同じです。

result

式評価の結果の値がここで返されます。

metadata

式または結果に関連付けられているメタデータがここに返されます。

戻り値

このメソッドは、成功または失敗を示す HRESULT を返します。

備考

コード サンプル

ComPtr<IDebugHost> spHost; /* get the host */

ComPtr<IDebugHostEvaluator> spEval;
if (SUCCEEDED(spHost.As(&spEval)))
{
    ComPtr<IModelObject> spNotepadProcesses;

    // We can use any syntax that's private to the host (not only 
    // language syntax).  This is not necessarily portable from host to host
    if (SUCCEEDED(spEval->EvaluateExtendedExpression(
        USE_CURRENT_HOST_CONTEXT, 
        L"@$cursession->Processes.Where(p => p.Name == \"notepad.exe\")", 
        nullptr, 
        &spNotepadProcesses, 
        nullptr)))
    {
        // spNotepadProcesses will contain a collection of every process 
        // named (exactly) "notepad.exe".  Such can be iterated with IIterableConcept.
    }
}

必要条件

要件 価値
ヘッダー dbgmodel.h

関連項目

IDebugHostEvaluator インターフェイス