Metodo IDebugHostEvaluator2::EvaluateExtendedExpression (dbgmodel.h)
Il metodo EvaluateExtendedExpression è simile al metodo EvaluateExpression, ad eccezione del fatto che restituisce funzionalità aggiuntive di non linguaggio che un particolare host di debug sceglie di aggiungere al relativo analizzatore di espressioni. Per Gli strumenti di debug per Windows, ad esempio, consente tipi anonimi, query LINQ, qualificatori di moduli, identificatori di formato e altre funzionalità non C/C++.
È importante notare che non esiste alcuna garanzia che un'espressione che restituisce un host tramite EvaluateExtendedExpression valuterà correttamente contro un altro host che esegue il debug dello stesso linguaggio. Le estensioni nell'analizzatore di espressioni sono la vista 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 si verifica la valutazione dell'espressione. Se sono presenti, ad esempio, letture di memoria della destinazione a causa di dereferenza puntatore, lo spazio degli indirizzi in cui vengono eseguite le letture di memoria viene assegnato da questo argomento.
expression
Espressione da valutare. Questo può usare estensioni private host per la sintassi del linguaggio.
bindingContext
Contesto di associazione in cui verranno cercati i nomi dei simboli (variabile). 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 l'errore.
Commenti
Codice di esempio
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.
}
}
Requisiti
Requisito | Valore |
---|---|
Intestazione | dbgmodel.h |