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 |