Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Метод EvaluateExtendedExpression аналогичен методу EvaluateExpression, за исключением того, что он возвращает дополнительные функции, отличные от языка, которые конкретный узел отладки выбирает для добавления в его средство оценки выражений. Для средств отладки для Windows, например, это позволяет анонимным типам, запросам LINQ, квалификаторам модулей, описателям формата и другим функциям, отличным от C/C++.
Важно отметить, что выражение, которое оценивается по одному узлу через EvaluateExtendedExpression, правильно оценивается на другом узле, который отлаживать тот же язык. Расширения в вычислителе выражений — это представление заданного узла. Настоятельно рекомендуется, чтобы клиенты использовали метод EvaluateExpression вместо метода EvaluateExtendedExpression по этой точной причине. Использование этого метода снижает переносимость вызывающего объекта.
Синтаксис
HRESULT EvaluateExtendedExpression(
IDebugHostContext *context,
PCWSTR expression,
IModelObject *bindingContext,
_COM_Errorptr_ IModelObject **result,
IKeyStore **metadata
);
Параметры
context
Контекст узла, в котором выполняется оценка выражений. Например, при чтении памяти целевого объекта из-за разыменов указателя адресное пространство, в котором выполняются операции чтения памяти, присваивается этому аргументу.
expression
Вычисляемого выражения. Это может использовать частные расширения для синтаксиса языка.
bindingContext
Контекст привязки, в котором будут искаться имена символов (переменных). Для C++это семантически эквивалентно этому значению указателя.
result
Результирующее значение вычисления выражения будет возвращено здесь.
metadata
Здесь возвращаются все метаданные, связанные с выражением или результатом.
Возвращаемое значение
Этот метод возвращает HRESULT, указывающий на успешность или сбой.
Замечания
Пример кода
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.
}
}
Требования
Требование | Ценность |
---|---|
заголовка | dbgmodel.h |