Compartilhar via


Método IDebugHostEvaluator3::EvaluateExtendedExpression (dbgmodel.h)

O método EvaluateExtendedExpression é semelhante ao método EvaluateExpression, exceto que ele ativa novamente a funcionalidade adicional que um host de depuração específico escolhe adicionar ao avaliador de expressão. Para ferramentas de depuração para Windows, por exemplo, isso permite tipos anônimos, consultas LINQ, qualificadores de módulo, especificadores de formato e outras funcionalidades não C/C++.

É importante observar que não há garantia de que uma expressão avaliada em relação a um host por meio de EvaluateExtendedExpression será avaliada corretamente em relação a outro host que depura o mesmo idioma. As extensões no avaliador de expressão são a visão geral de um determinado host. É altamente recomendável que os clientes utilizem o método EvaluateExpression em vez do método EvaluateExtendedExpression por esse motivo exato. Usar esse método reduz a portabilidade do chamador.

Sintaxe

HRESULT EvaluateExtendedExpression(
  IDebugHostContext           *context,
  PCWSTR                      expression,
  IModelObject                *bindingContext,
  _COM_Errorptr_ IModelObject **result,
  IKeyStore                   **metadata
);

Parâmetros

context

O contexto do host no qual a avaliação da expressão ocorre. Se houver, por exemplo, leituras de memória do destino devido a desreferências de ponteiro, o espaço de endereço no qual essas leituras de memória são feitas é fornecido por esse argumento.

expression

A expressão a ser avaliada. Isso pode usar extensões privadas de host para a sintaxe de idioma.

bindingContext

O contexto de associação no qual os nomes de símbolo (variável) serão pesquisados. Para C++, isso é semanticamente equivalente a esse valor de ponteiro.

result

O valor resultante da avaliação da expressão será retornado aqui.

metadata

Todos os metadados associados à expressão ou ao resultado são retornados aqui.

Valor de retorno

Esse método retorna HRESULT que indica êxito ou falha.

Observações

de exemplo de código

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

Requisitos

Requisito Valor
cabeçalho dbgmodel.h

Consulte também

interface IDebugHostEvaluator3