Compartilhar via


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

O método EvaluateExtendedExpression é semelhante ao método EvaluateExpression, exceto pelo fato de que ele volta a ativar 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á nenhuma 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. O uso desse 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 ocorre a avaliação da expressão. 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

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

bindingContext

O contexto de associação no qual os nomes de símbolo (variável) serão pesquisados. Para C++, isso é semanticamente equivalente ao valor desse 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.

Retornar valor

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

Comentários

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

Confira também

Interface IDebugHostEvaluator2