Share via


IDebugProgramProvider2

這個已註冊的介面可讓會話偵錯管理員 (SDM) 透過 IDebugProgramPublisher2 介面取得已「發佈」之程式的相關信息。

語法

IDebugProgramProvider2 : IUnknown

實作者的注意事項

偵錯引擎 (DE) 會實作這個介面,以提供正在偵錯之程式的相關信息。 此介面會使用 計量metricProgramProvider在登錄的 DE 區段中註冊,如 SDK 協助程式進行偵錯中所述

呼叫端注意事項

使用CLSID從登錄取得之程式提供者的呼叫 COM 函CoCreateInstance式。 請參閱範例。

以 Vtable 順序排列的方法

方法 描述
GetProviderProcessData 取得程式執行的相關信息,以各種方式篩選。
GetProviderProgramNode 取得程序節點,指定特定的進程識別碼。
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);
}

另請參閱