Metodo IDebugHostEvaluator::EvaluateExtendedExpression (dbgmodel.h)
Il metodo EvaluateExtendedExpression è simile al metodo EvaluateExpression, ad eccezione del fatto che viene riattivata la funzionalità aggiuntiva non in linguaggio scelta da un host di debug specifico per l'aggiunta al relativo analizzatore di espressioni. Per gli strumenti di debug per Windows, ad esempio, consente tipi anonimi, query LINQ, qualificatori di modulo, identificatori di formato e altre funzionalità non C/C++.
È importante notare che non esiste alcuna garanzia che un'espressione che restituisca un host tramite EvaluateExtendedExpression valuterà correttamente rispetto a un altro host che esegue il debug dello stesso linguaggio. Le estensioni nell'analizzatore di espressioni sono la visualizzazione di un determinato host. È consigliabile che i client usino il metodo EvaluateExpression anziché il metodo EvaluateExtendedExpression per questo motivo esatto. L'uso di questo metodo riduce la portabilità del chiamante.
Sintassi
HRESULT EvaluateExtendedExpression(
IDebugHostContext *context,
PCWSTR expression,
IModelObject *bindingContext,
_COM_Errorptr_ IModelObject **result,
IKeyStore **metadata
);
Parametri
context
Contesto host in cui viene eseguita la valutazione dell'espressione. Se sono presenti, ad esempio, letture di memoria della destinazione a causa di dereferenziazioni del puntatore, lo spazio degli indirizzi in cui vengono eseguite le letture di memoria viene fornito da questo argomento.
expression
Espressione da valutare. Ciò può usare estensioni private host per la sintassi del linguaggio.
bindingContext
Contesto di associazione in cui verranno cercati i nomi dei simboli (variabili). Per C++, questo valore è semanticamente equivalente al valore del puntatore.
result
Il valore risultante della valutazione dell'espressione verrà restituito qui.
metadata
Tutti i metadati associati all'espressione o al risultato vengono restituiti qui.
Valore restituito
Questo metodo restituisce HRESULT che indica l'esito positivo o negativo.
Commenti
Codice di esempio
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.
}
}
Requisiti
Requisito | Valore |
---|---|
Intestazione | dbgmodel.h |