次の方法で共有


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.
    }
}

要件

要件
Header dbgmodel.h

こちらもご覧ください

IDebugHostEvaluator インターフェイス