Condividi tramite


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

Vedi anche

Interfaccia IDebugHostEvaluator2