Condividi tramite


Metodo IDebugHostEvaluator::EvaluateExtendedExpression (dbgmodel.h)

Il metodo EvaluateExtendedExpression è simile al metodo EvaluateExpression, ad eccezione del fatto che riattiva funzionalità aggiuntive non in linguaggio che un determinato host di debug sceglie di aggiungere al relativo analizzatore di espressioni. Per Gli strumenti di debug per Windows, ad esempio, abilita 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 valuta rispetto a 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 tali 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 di simbolo (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 negativo.

Osservazioni

esempio di codice

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

Fabbisogno

Requisito Valore
intestazione dbgmodel.h

Vedere anche

'interfaccia IDebugHostEvaluator