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