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);
}