Freigeben über


IDebugHostEvaluator2::EvaluateExtendedExpression-Methode (dbgmodel.h)

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

Es ist wichtig zu beachten, dass es keine Garantie dafür gibt, dass ein Ausdruck, der über EvaluateExtendedExpression für einen Host ausgewertet wird, ordnungsgemäß für einen anderen Host ausgewertet wird, der dieselbe Sprache debuggt. Erweiterungen in der Ausdrucksauswertung sind die Purview eines bestimmten Hosts. Es wird dringend empfohlen, dass Clients aus genau diesem Grund 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 erfolgt. Wenn für instance Speicherlesevorgänge des Ziels aufgrund von Zeigerdereferenzen vorhanden sind, wird der Adressraum, in dem diese Speicherlesungen vorgenommen werden, 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 wert dieses Zeigers.

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, das den Erfolg oder Fehler angibt.

Hinweise

Codebeispiel

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

ComPtr<IDebugHostEvaluator2> 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

IDebugHostEvaluator2-Schnittstelle