IDebugHostEvaluator2::EvaluateExtendedExpression 메서드(dbgmodel.h)
EvaluateExtendedExpression 메서드는 특정 디버그 호스트가 식 계산자에 추가하도록 선택하는 추가 비언어 기능을 다시 설정한다는 점을 제외하고 EvaluateExpression 메서드와 유사합니다. 예를 들어 Windows용 디버깅 도구의 경우 익명 형식, LINQ 쿼리, 모듈 한정자, 형식 지정자 및 기타 비 C/C++ 기능을 사용할 수 있습니다.
EvaluateExtendedExpression을 통해 한 호스트에 대해 평가되는 식이 동일한 언어를 디버그하는 다른 호스트에 대해 올바르게 평가된다는 보장은 없다는 점에 유의해야 합니다. 식 계산기의 확장은 지정된 호스트의 관점입니다. 클라이언트는 이러한 정확한 이유로 EvaluateExtendedExpression 메서드 대신 EvaluateExpression 메서드를 활용하는 것이 좋습니다. 이 메서드를 사용하면 호출자의 이식성이 줄어듭니다.
구문
HRESULT EvaluateExtendedExpression(
IDebugHostContext *context,
PCWSTR expression,
IModelObject *bindingContext,
_COM_Errorptr_ IModelObject **result,
IKeyStore **metadata
);
매개 변수
context
식 계산이 발생하는 호스트 컨텍스트입니다. instance 경우 포인터 역참조로 인해 대상의 메모리 읽기가 있는 경우 해당 메모리 읽기가 수행되는 주소 공간이 이 인수에 의해 지정됩니다.
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 |