다음을 통해 공유


IDebugProgramProvider2

이 등록된 인터페이스를 사용하면 SDM(세션 디버그 관리자)이 IDebugProgramPublisher2 인터페이스를 통해 “게시된” 프로그램에 대한 정보를 가져올 수 있습니다.

구문

IDebugProgramProvider2 : IUnknown

구현자에 대한 참고 사항

DE(디버그 엔진)는 디버그되는 프로그램에 대한 정보를 제공하기 위해 이 인터페이스를 구현합니다. 이 인터페이스는 디버깅을 위한 SDK 도우미에 설명된 대로 메트릭 metricProgramProvider를 사용하여 레지스트리의 DE 섹션에 등록됩니다.

호출자 참고 사항

레지스트리에서 가져온 프로그램 공급자의 CLSID를 사용하여 COM의 CoCreateInstance 함수를 호출합니다. 예제를 참조하세요.

Vtable 순서의 메서드

메서드 설명
GetProviderProcessData 다양한 방법으로 필터링된 실행 중인 프로그램에 대한 정보를 가져옵니다.
GetProviderProgramNode 특정 프로세스 ID가 지정된 프로그램 노드를 가져옵니다.
WatchForProviderEvents 특정 종류의 프로세스와 연결된 공급자 이벤트를 감시하는 콜백을 설정합니다.
SetLocale DE에 필요한 언어별 리소스에 대한 로캘을 설정합니다.

설명

일반적으로 프로세스는 이 인터페이스를 사용하여 해당 프로세스에서 실행되는 프로그램에 대해 알아봅니다.

요구 사항

헤더: msdbg.h

네임스페이스: Microsoft.VisualStudio.Debugger.Interop

어셈블리: Microsoft.VisualStudio.Debugger.Interop.dll

예시

IDebugProgramProvider2 *GetProgramProvider(GUID *pDebugEngineGuid)
{
    // This is typically defined globally. For this example, it is
    // defined here.
    static const WCHAR strRegistrationRoot[] = L"Software\\Microsoft\\VisualStudio\\8.0Exp";
    IDebugProgramProvider2 *pProvider = NULL;
    if (pDebugEngineGuid != NULL) {
        CLSID clsidProvider = { 0 };
        ::GetMetric(NULL,
                    metrictypeEngine,
                    *pDebugEngineGuid,
                    metricProgramProvider,
                    &clsidProvider,
                    strRegistrationRoot);
        if (!IsEqualGUID(clsidProvider,GUID_NULL)) {
            CComPtr<IDebugProgramProvider2> spProgramProvider;
            spProgramProvider.CoCreateInstance(clsidProvider);
            if (spProgramProvider != NULL) {
                pProvider = spProgramProvider.Detach();
            }
        }
    }
    return(pProvider);
}

참고 항목