다음을 통해 공유


IDebugHostEvaluator::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<IDebugHostEvaluator> 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

추가 정보

IDebugHostEvaluator 인터페이스