Freigeben über


IDebugHostEvaluator::EvaluateExtendedExpression-Methode (dbgmodel.h)

Die EvaluateExtendedExpression-Methode ähnelt der EvaluateExpression-Methode, mit der Ausnahme, dass sie zusätzliche nichtsprachliche Funktionen zurückschaltet, die ein bestimmter Debughost seinem Ausdrucksauswerter hinzufügen möchte. Für Debugtools für Windows werden beispielsweise anonyme Typen, LINQ-Abfragen, Modulqualifizierer, Formatbezeichner und andere Nicht-C/C++-Funktionen aktiviert.

Es ist wichtig zu beachten, dass es keine Garantie dafür gibt, dass ein Ausdruck, der für einen Host über EvaluateExtendedExpression ausgewertet wird, ordnungsgemäß für einen anderen Host ausgewertet wird, der dieselbe Sprache debugt. Erweiterungen in der Ausdrucksauswertung sind die Purview eines bestimmten Hosts. Aus diesem Grund wird dringend empfohlen, dass Clients die EvaluateExpression-Methode anstelle der EvaluateExtendedExpression-Methode verwenden. Die Verwendung dieser Methode verringert die Portabilität des Aufrufers.

Syntax

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

Parameter

context

Der Hostkontext, in dem die Ausdrucksauswertung stattfindet. Wenn für instance Speicherlesevorgänge des Ziels aufgrund von Zeigerdeferzen vorhanden sind, wird der Adressraum, in dem diese Speicherlesevorgänge erfolgen, durch dieses Argument angegeben.

expression

Der auszuwertende Ausdruck. Dies kann private Hosterweiterungen für die Sprachsyntax verwenden.

bindingContext

Der Bindungskontext, in dem Symbolnamen (Variablennamen) gesucht werden. Für C++ entspricht dies semantisch dem folgenden Zeigerwert.

result

Der resultierende Wert der Ausdrucksauswertung wird hier zurückgegeben.

metadata

Alle Metadaten, die dem Ausdruck oder Ergebnis zugeordnet sind, werden hier zurückgegeben.

Rückgabewert

Diese Methode gibt HRESULT zurück, was auf Erfolg oder Fehler hinweist.

Hinweise

Codebeispiel

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

Anforderungen

Anforderung Wert
Header dbgmodel.h

Weitere Informationen

IDebugHostEvaluator-Schnittstelle